配置nginx支持https,其實也簡單,搞個證書,然后修改下配置文件就好了。我以前一篇文章(使用docker部署多個nginx站點并配置負載均衡)為例,做個記錄。
如前所述,我使用docker,部署了3個nginx。一個做負載均衡服務器,另外兩個做應用。結構如下:
那么,支持https,也是在負載均衡這里進行設置。詳細記錄如下:
一、制作證書
反正docker跑在linux下,證書就在linux里制作了。
1、安裝openssl
yum install -y openssl openssl-devel
2、制作密鑰
openssl genrsa -out szdata.key 2048
3、制作證書
openssl req -new -x509 -days 3650 -key szdata.key -out szdata.crt
輸入信息,回車,回車,就好了。
如此,證書即生成于當前目錄了。
二、重新創(chuàng)建nginx容器
像我的情況,重新創(chuàng)建負載均衡這個容器就行了。腳本如下:
sudo docker run --name nginx-szdata-lb --privileged -it -p 8443:443 \
-v /home/admin/szdata/nginx/conf/lb.conf:/etc/nginx/nginx.conf:ro \
-v /home/admin/szdata/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
-v /home/admin/szdata/nginx/logs:/var/log/nginx \
-v /home/admin/szdata/nginx/cert:/etc/nginx/cert \
-d nginx
docker容器刪除、重建很平常,這時就體現出掛載方式部署的優(yōu)越性了。不然配置文件跟著被刪,太麻煩。
注意到其中一個文件cert,用于存放證書。
三、修改nginx配置
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
#負載均衡
upstream szdata-web{
server 192.168.175.128:8001;
server 192.168.175.128:8002;
}
#重點
server {
listen 443 ssl;
server_name localhost;
# 注意文件位置,是從/etc/nginx/下開始算起的
ssl_certificate cert/szdata.crt;
ssl_certificate_key cert/szdata.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://szdata-web;
}
location /pubzy/ {
alias /usr/share/nginx/html/;
}
}
#這個好像沒什么卵用。不起作用。存疑。
server {
listen 80;
server_name localhost;
return 301 https://$host$request_uri;
}
}
有關負載均衡,請看我前一篇文章:使用docker部署多個nginx站點并配置負載均衡
然后輸入 https://ip:8443/,就可以訪問了。
四、小結
從配置看,nginx還是用了轉發(fā)。外部使用https請求,nginx轉發(fā)到了http。
總的來看,設置nginx支持https還是比較簡單的。自己制作的網站證書,雖然瀏覽器不認,但這并不妨礙瀏覽器與服務器之間進行加密傳輸。試想如果沒有https,那么我們登錄的時候,賬號密碼就是明文傳輸,今時今日的客戶無法接受。所以https是標配。文章來源:http://www.zghlxwxcb.cn/news/detail-619247.html
不過,站點改為https后,之前如果有一些外鏈是http的話,將引用不了。文章來源地址http://www.zghlxwxcb.cn/news/detail-619247.html
到了這里,關于使用docker部署nginx并支持https的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!