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 端口是开放状态

posted @ 2020-02-05 16:20  LiuChengloong  阅读(371)  评论(0编辑  收藏  举报