docker镜像的nginx配置证书SSL,单独配置单个localtion使用证书,其他nginx配置不影响
原本的地址是http://test.dev.net/mobile
想要的效果是https://test.dev.net/mobile
但是其他地址还是http://test.dev.net/smart_mobile或者http://test.dev.net/不变
一、原本的nginx配置
server{listen80;server_name test.dev.net;client_max_body_size 500m;#access_log/var/log/nginx/host.access.log main;location/{# 不缓存html,防止程序更新后缓存继续生效if($request_filename~*.*\.(?:htm|html)$){add_header Cache-Control"private, no-store, no-cache, must-revalidate, proxy-revalidate";access_log on;}root/etc/nginx/vue_page/boyue/dist;try_files $uri $uri//index.html;index index.html index.htm;}location/smart_mobile{add_header'Access-Control-Allow-Origin''*';add_header'Access-Control-Allow-Methods''GET, POST, OPTIONS';alias/etc/nginx/vue_page/boyue/smart_mobile;try_files $uri $uri//boyue/index.html;index index.html;}location/mobile{add_header'Access-Control-Allow-Origin''*';add_header'Access-Control-Allow-Methods''GET, POST, OPTIONS';alias/etc/nginx/vue_page/boyue/mobile;try_files $uri $uri//boyue/index.html;index index.html;}}现在需要修改/mobile模块使用https来访问,但是不影响其他地址。
二、修改原本server块,下面再增加一个server块写ssl证书配置
server{listen443ssl;server_name test.dev.net;# 全局SSL配置(必须) ssl_certificate/etc/nginx/ssl/fkp.pem;ssl_certificate_key/etc/nginx/ssl/fkp.key;#SSL配置 #ssl_protocols TLSv1.2TLSv1.3;#ssl_ciphersECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;#ssl_prefer_server_ciphers off;# 默认所有443端口的请求都需要SSL# 只有这个 location 实际处理请求 location/mobile{# 你的应用配置 add_header'Access-Control-Allow-Origin''*';add_header'Access-Control-Allow-Methods''GET, POST, OPTIONS';alias/etc/nginx/vue_page/boyue/mobile;try_files $uri $uri//boyue/index.html;index index.html;}}只要生成证书后配置证书地址即可。
实际配置中遇到的错误:因为用到了docker镜像配置nginx,导致出现端口只映射了80,未映射443端口,所以配置完效果未出现
原始nginx镜像:
最后增加了个新的nginx的docker镜像。为什么新加,因为不想影响旧nginx的运行,
新增的nginx镜像:
新增docker命令如下:主要映射nginx配置文件目录、ssl证书目录和前端包的目录
docker run-d--name nginx-ssl-p443:443-v/home/zxd/docker_mounts/nginx/nginx.conf:/etc/nginx/nginx.conf-v/home/zxd/docker_mounts/nginx/conf.d:/etc/nginx/conf.d-v/home/zxd/docker_mounts/nginx/ssl:/etc/nginx/ssl-v/home/zxd/docker_mounts/nginx/vue_page:/etc/nginx/vue_pagenginx:latest