使用ssl模組配置同時支援http和https並存
一,生成證照
1、首先,進入你想建立證照和私鑰的目錄,例如:
cd /etc/nginx/
2、建立伺服器私鑰,命令會讓你輸入一個口令:
openssl genrsa -des3 -out server.key 2048
3、建立簽名請求的證照(CSR):
openssl req -new -key server.key -out server.csr
4、在載入SSL支援的Nginx並使用上述私鑰時除去必須的口令:
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
5、最後標記證照使用上述私鑰和CSR:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
二,配置nginx
cd /etc/nginx
vim nginx.conf
HTTPS server configuration
server {
#偵聽443埠
listen 443;
ssl on;
#證照地址
ssl_certificate /etc/nginx/server.crt;
ssl_certificate_key /etc/nginx/server.key;
ssl_session_timeout 5m;
index index.php index.html index.htm;
#設定本虛擬主機的訪問日誌
server_name localhost;
root /var/www;
#rewrite_log on;
#access_log logs/hc-admin.access.log main;
#error_log logs/hc-admin.access.log main;
location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css|ttf|woff|woff2)$
{
root /var/www;
}
location / {
index index.htm index.html index.php;
}
location ~ \.php/?.*$ {
root /var/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#載入Nginx預設"伺服器環境變數"配置
#include fastcgi.conf;
include fastcgi_params;
#設定PATH_INFO並改寫SCRIPT_FILENAME,SCRIPT_NAME伺服器環境變數
set $fastcgi_script_name2 $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+\.php)(/.+)$") {
set $fastcgi_script_name2 $1;
set $path_info $2;
}
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name2;
fastcgi_param SCRIPT_NAME $fastcgi_script_name2;
}
}
重啟nginx,在瀏覽器輸入:https://IP地址 會跳轉到 http://IP地址/ssl/ 這個地址(後期調整為webservice介面地址即可)
三、受瀏覽器信任的StartSSL免費SSL證照:
跟VeriSign一樣,StartSSL(網址:http://www.startssl.com,公司名:StartCom)也是一家CA機構,
它的根證照很 久之前就被一些具有開源背景的瀏覽器支援(Firefox瀏覽器、谷歌Chrome瀏覽器、蘋果Safari瀏覽器等)。
四、專案需要,將訪問目錄 \services\ 由http訪問 重定向到 https (解決方法:nginx rewrite 加上 location 方式實現)
location ~ /services/.*$ {
if ($server_port ~ "^80$"){
set $rule_0 1$rule_0;
}
if ($rule_0 = "1"){
rewrite /(.*) [https://IP](https://ip/)地址/$1 permanent; break;
}
}
五,配置結束上傳以後用nginx -t 測試下配置無誤 就reload一下nginx服務 檢查443埠是否在監聽
/usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful (顯示錶示配置檔案沒有錯誤)
service nginx reload (重新載入nginx服務)
netstat -lan | grep 443 (檢視443埠)
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN (有看到這一行 就表示HTTPS已經在工作了)
本作品採用《CC 協議》,轉載必須註明作者和本文連結