Nginx配置https
前提条件
服务器已安装 SSL 驱动
建议使用最新稳定版 Nginx Stable version。
确保已经获取数字证书。(一般是一个 key 文件和一个 pem 文件)
SSL相关配置
打开Nginx的conf目录下的nginx.conf配置文件,定位以下代码段:
## HTTPS
# #server {
...
#}
将以上代码段替换为:
server {
listen 443 ssl;
server_name xxx.com www.xxx.com;
ssl_certificate /xxx/xx/rsa.pem; #RSA证书路径
ssl_certificate_key /xxx/xx/rsa.key; #RSA证书私钥路径
ssl_session_timeout 5m;
ssl_ciphers
ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
location ^~/jsdoctor-platform-admin/ {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://localhost:8090;
}
}
重启Nginx服务器
选择以下方式之一,重启Nginx服务器:
运行 .../nginx/sbin/nginx -t
进行检测,若出现异常,按照提示解决;若没有问题,运行 .../nginx/sbin/nginx -s reload
热加载。
运行 pkill nginx
关闭 nginx
进程,并运行 ../nginx/sbin/nginx
启动 Nginx
服务器。
强制HTTP跳转HTTPS(可选)
为了将用户默认的HTTP请求自动跳转为HTTPS请求,打开nginx.conf配置文件,添加一下代码:
server {
listen 80;
return 301 https://$host$request_uri;
location / {
...
}
}
解决HTTP静态资源访问
网站配置了 https 访问,使用 http 访问资源正常,使用 https 无法访问 http 静态资源。(常见于静态资源分离的项目)
如果在一个 https 页面里动态的引入 http 资源,比如引入一个 js 文件,会被直接 block 掉的。不过如果您的网站同时准备了 https 资源和 http 资源,那么可以使用相对协议实现当网站引入的都是 http 资源,网站域名更换为 https 后的无缝切换。
具体使用方法为:
<img src="//xxx.png">
不指定资源是 http 还是 https 即可。此时需要配置静态资源为 https,否则将无法找到对应资源。
只需要在代理图片 server 上也加上 ssl 配置即可。
遇到的问题
FAQ:配置都是正确的,但是以 https 的方式访问网站没有响应。
云服务器请确保 443 端口是开放状态