配置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
输入信息,回车,回车,就好了。
如此,证书即生成于当前目录了。
二、重新创建nginx容器
像我的情况,重新创建负载均衡这个容器就行了。脚本如下:
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容器删除、重建很平常,这时就体现出挂载方式部署的优越性了。不然配置文件跟着被删,太麻烦。
注意到其中一个文件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还是用了转发。外部使用https请求,nginx转发到了http。
总的来看,设置nginx支持https还是比较简单的。自己制作的网站证书,虽然浏览器不认,但这并不妨碍浏览器与服务器之间进行加密传输。试想如果没有https,那么我们登录的时候,账号密码就是明文传输,今时今日的客户无法接受。所以https是标配。文章来源:https://www.toymoban.com/news/detail-619247.html
不过,站点改为https后,之前如果有一些外链是http的话,将引用不了。文章来源地址https://www.toymoban.com/news/detail-619247.html
到了这里,关于使用docker部署nginx并支持https的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!