nginx+php-fpm配置HTTPS

Vckin發表於2022-03-22

使用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 協議》,轉載必須註明作者和本文連結

相關文章