HTTPS配置指北

原文鏈接:https://www.changxuan.top/?p=672


下載 SSL 證書

如果是在各大雲廠商註冊的域名,一般都可以申請爲期一年免費的SSL證書。當然也有其它的一些平臺會提供免費證書。

配置 Nginx

先講一下我服務器的情況。由於在服務器上運行了 Python、PHP 和 Java 三種語言編寫的多個網站,爲了能夠都使用 80 端口訪問,所以我用 Nginx 做了反向代理。這樣只需要在 Nginx 層進行 https 配置就可以了。

配置文件

在更改配置文件時,我一般採用類似於開閉原則的方式進行更改。進入到文件夾 /etc/nginx 中,新建一個文件夾 dconf 。然後在 nginx 默認配置文件 nginx.conf 的 http域內加上一行配置,

# Load customize configuration
include  /etc/nginx/dnconf/*.conf;

這樣每次啓動 nginx 服務時,便會自動加載 dconf 文件夾中的自定義配置。然後在 dconf 中新建一個文件 php.conf 。(注:使用 yum命令安裝的 Nginx 1.12.2)下面是配置文件 php.conf 中的內容:

upstream php {
        server 127.0.0.1:8088;
}
server {
        listen 443;
        server_name b.yuming.cn;
        ssl_certificate /etc/nginx/ssl/b.yuming.cn_bundle.crt;
        ssl_certificate_key /etc/nginx/ssl/b.yuming.cn.key;
        ssl on;
        ssl_session_cache builtin:1000 shared:SSL:10m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
        ssl_prefer_server_ciphers on;
        access_log /etc/nginx/logs/b.yuming.cn.access.log;
        location /
        {
          proxy_next_upstream http_502 http_504 error timeout invalid_header;
          proxy_set_header Host  $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass http://php;
        }
}
server {
        listen 443;
        server_name a.yuming.cn;
        ssl_certificate /etc/nginx/ssl/a.yuming.cn_bundle.crt;
        ssl_certificate_key /etc/nginx/ssl/a.yuming.cn.key;
        ssl on;
        ssl_session_cache builtin:1000 shared:SSL:10m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
        ssl_prefer_server_ciphers on;
        access_log /etc/nginx/logs/a.yuming.cn.access.log;
        location /
        {
          proxy_next_upstream http_502 http_504 error timeout invalid_header;
          proxy_set_header Host  $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass http://php;
        }
}
server {
          listen 80;
          server_name a.yuming.cn b.yuming.cn ;
          return 301 https://$host$request_uri;
}

配置文件解釋

  • Apache 服務地址與端口
upstream php {
        server 127.0.0.1:8088;
}
  • 針對域名 a.yuming.cn 的配置
server {
        listen 443;
        server_name b.yuming.cn;
        ssl_certificate /etc/nginx/ssl/b.yuming.cn_bundle.crt;
        ssl_certificate_key /etc/nginx/ssl/b.yuming.cn.key;
        ssl on;
        ssl_session_cache builtin:1000 shared:SSL:10m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
        ssl_prefer_server_ciphers on;
        access_log /etc/nginx/logs/b.yuming.cn.access.log;
        location /
        {
          proxy_next_upstream http_502 http_504 error timeout invalid_header;
          proxy_set_header Host  $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass http://php;
        }
}
  • 重定向 80 端口訪問請求
server {
          listen 80;
          server_name a.yuming.cn b.yuming.cn ;
          return 301 https://$host$request_uri;
}

FAQ

  1. 配置好重啓 nginx 之後,使用 https 可以正常訪問網站,爲什麼瀏覽器上不顯示鎖標誌?

查看網站中是否引用了http類型的圖片、視頻、JS或者CSS等資源,如果存在此類資源請改爲https鏈接。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章