原文鏈接: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
- 配置好重啓 nginx 之後,使用 https 可以正常訪問網站,爲什麼瀏覽器上不顯示鎖標誌?
查看網站中是否引用了http類型的圖片、視頻、JS或者CSS等資源,如果存在此類資源請改爲https鏈接。