Linux配置https服務
首先說明一點,並不是僅僅配置就可以使用真正的https服務,因為需要向證書頒發機構申請SSL證書
首先生成私鑰和csr檔案
切換到某個目錄,在linux機器上執行以下命令生成私鑰
openssl genrsa -out server.key 2048
然後在linux機器上執行以下命令生成csr檔案
openssl req -new -key server.key -out certreq.csr
以下標識文字僅供參考,請根據商戶自己實際情況進行填寫
Country Name: CN //您所在國家的ISO標準代號,中國為CN
State or Province Name:beijing //您單位所在地省/自治區/直轄市
Locality Name:beijing //您單位所在地的市/縣/區
Organization Name: liminghulian //您單位/機構/企業合法的名稱
Organizational Unit Name: dev //部門名稱
Common Name: www.liminghulian.com //通用名,例如:www.liminghulian.com。此項必須與您訪問提供SSL服務的伺服器時所應用的域名完全匹配。
Email Address: //您的郵件地址,不必輸入,直接回車跳過
"extra"attributes //以下資訊不必輸入,回車跳過直到命令執行完畢。
執行上面的命令後,在當前目錄下即可生成私鑰檔案server.key和certreq.csr csr檔案
以騰訊雲的伺服器作為參考
然後按要求把解析域名配置好,最後會得到以下介面
把證書下載下來會得到nginx中的兩個檔案如圖
將這兩個檔案放到自己定義的目錄,這裡我放到的目錄是 /https/
配置參考如下:
server {
listen 443;
server_name mobai.luomengyuan.cn;
access_log /data/wwwlogs/access_nginx.log combined;
root /data/wwwroot/mobaidanche/laravel/public;
index index.html index.htm index.php;
ssl on; #開啟ssl支援
ssl_certificate /https/1_mobai.luomengyuan.cn_bundle.crt; #指定伺服器證書路徑
ssl_certificate_key /https/2_mobai.luomengyuan.cn.key; #指定私鑰證書路徑
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #指定SSL伺服器端支援的協議版本
ssl_ciphers ECDHE-RSA-AES128-GCM-
SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
location ~ [^/]\.php(/|$) {
#fastcgi_pass remote_php_ip:9000;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
#pathinfo 支援開始 以上配置資訊根據實際情況配置
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
#pathinfo 支援結束
}
location / {
#如果沒有找到請求的檔案
if (!-e $request_filename){
#rewrite ^(.*)$ /index.php?s=/$1 last;
#重寫 正則匹配 重定向後的地址
rewrite ^(.*)$ /index.php/$1 last;
}
}
}
做完以上工作後測試nginx配置檔案無誤後重新載入配置,如果需要配置通過http訪問時自動跳轉到https 可以在80埠對應的虛擬主機配置中設定
server {
listen 80;
server_name mobai.luomengyuan.cn;
rewrite ^(.*) https://mobai.luomengyuan.cn$1 permanent;
}