記錄一次nginx升級,支援ipv4和ipv6訪問https

大雄45發表於2021-08-21
導讀 專案要求,需要讓現有網站專案支援https,並同時支援ipv6訪問,經過分析,現在nginx版本較老,所以決定升級nignx,並且同步配置https和ipv6。
升級準備

伺服器網路環境需要支援ipv6,並且分配公網ipv6地址,ssl證照提前申請好.

下載nginx
wget 
安裝openssl
yum install openssl
yum install openssl-devel

判斷域名解析是否支援ipv6
找一臺支援ipv6網路的客戶端電腦,僅使用ipv6網路來ping網站域名,如果解析域名返回的ip地址不是ipv6,則說明域名ipv6解析未做。編譯nginx

./configure     --user=root     --group=root     --prefix=/usr/local/nginx     --with-http_ssl_module     --with-stream     --with-mail=dynamic     --with-http_gzip_static_module     --with-pcre   --with-http_mp4_module     --with-http_gunzip_module  --with-ipv6
make
make install

這裡注意,在較高的nginx版本里面,已經自帶了ipv6模組,不用增加–with-ipv6,如果是比較老的版本編譯,需要增加–with-ipv6,如果編譯的時候出現如下警告提示,說明版本已經自帶ipv6模組:
記錄一次nginx升級,支援ipv4和ipv6訪問https記錄一次nginx升級,支援ipv4和ipv6訪問https

修改配置檔案
把之前申請的https證照(crt檔案和key檔案)上傳到伺服器目錄

listen 443 ssl;
    listen [::]:443 ssl;
    ssl_certificate  /usr/local/nginx/conf/conf.d/ssl/
    ssl_certificate_key  /usr/local/nginx/conf/conf.d/ssl/
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
listen 443 ssl; 支援ipv4訪問https
listen [::]:443 ssl; 支援ipv6訪問https
防火牆開放443埠
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload
過載nginx配置檔案
./sbin/nginx -s reload

檢視443埠是否在監聽狀態

lsof -i:443

記錄一次nginx升級,支援ipv4和ipv6訪問https記錄一次nginx升級,支援ipv4和ipv6訪問https

如圖所示,https協議已經在監聽狀態,並且分別支援ipv4和ipv6!

遇到的坑

一切操作和流程都沒有問題,但是發現啟動後,網站只支援ipv4訪問htpps,ipv6訪問提示如下錯誤:
記錄一次nginx升級,支援ipv4和ipv6訪問https記錄一次nginx升級,支援ipv4和ipv6訪問https
提示: 錯誤程式碼:SSL_ERROR_RX_RECORD_TOO_LONG
透過分析得出:
ipv4下能正常訪問https
ipv6下訪問https的流量是到了nginx伺服器
ipv6下測試443埠是通的
經過反覆分析以及錯誤程式碼提示能判斷出ipv6是證照沒有被有效識別到,導致ipv6無法使用https,但是ipv4下又能識別到證照,根據這一現象,能判斷出是ipv4和ipv6下網路流量的走向不同所致,經過和雲伺服器提供商溝通,發現原來是在ipv6下網際網路訪問443埠的流量被對映到了內網伺服器的80埠,所以ipv6下測試443埠是通的,但是又無法識別證照的問題。

總結

總體上升級配置是非常簡單的,並沒有任何難度,但是中途因為網路問題還是出現了意外,所以在分析應用故障的時候,一定要注意外部的網路環境問題。

原文來自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2788115/,如需轉載,請註明出處,否則將追究法律責任。

相關文章