如何使用Nginx配置將80端口重定向到443端口
要將Nginx配置為將HTTP(80端口)請求重定向到HTTPS(443端口),請按照以下步驟操作:
1. 創(chuàng)建或編輯Nginx配置文件
通常配置文件位于/etc/nginx/sites-available/
,您需要修改或創(chuàng)建相應的配置文件(如default
或您的站點配置)。
2. 配置HTTP重定向到HTTPS
在配置文件中添加以下內容,將HTTP請求重定向到HTTPS:
server { listen 80; listen [::]:80; # 支持IPv6 server_name example.com www.example.com; # 替換為您的域名 # 強制重定向到HTTPS return 301 https://$host$request_uri; }
3. 配置HTTPS服務器塊
添加或修改443端口的配置,啟用SSL并指定證書路徑:
server { listen 443 ssl; listen [::]:443 ssl; # 支持IPv6 server_name example.com www.example.com; # SSL證書配置 ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # 替換為您的證書路徑 ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # 替換為私鑰路徑 # 推薦SSL配置(增強安全性) ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; # HSTS(可選但推薦) add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; # 網(wǎng)站根目錄和其他配置 root /var/www/html; index index.html index.htm; location / { try_files $uri $uri/ =404; } }
4. 檢查防火墻設置
確保服務器防火墻允許HTTP(80)和HTTPS(443)端口:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw reload
5. 測試并應用配置
# 檢查配置語法是否正確 sudo nginx -t # 重新加載Nginx使配置生效 sudo systemctl reload nginx
6. 驗證配置
訪問 http://example.com
,應自動跳轉到 https://example.com
。
使用瀏覽器開發(fā)者工具檢查網(wǎng)絡請求,確認返回狀態(tài)碼為301或307。
使用SSL檢測工具(如SSL Labs)檢查HTTPS配置安全性。
注意事項
證書路徑:確保ssl_certificate
和ssl_certificate_key
指向正確的證書和私鑰文件(如Let's Encrypt證書)。
多域名支持:若需處理多個域名,在server_name
中添加所有相關域名,或使用通配符*.example.com
。
IPv6支持:若服務器啟用IPv6,需包含listen [::]:80;
和listen [::]:443 ssl;
。
HTTP/2:在HTTPS配置中添加http2
以啟用HTTP/2:
listen 443 ssl http2; listen [::]:443 ssl http2;
錯誤處理:若遇到重定向循環(huán),檢查SSL配置是否正確,或暫時注釋HTTPS配置,排查問題。
方法補充
nginx 80端口重定向到443端口
nginx 80端口重定向到443端口,也就是http訪問自動跳轉到https
配置如下:
1.按照如下格式修改nginx.conf 配置文件,80端口會自動轉給443端口,這樣就強制使用SSL證書加密了。訪問http的時候會自動跳轉到https上面。
server { server_name xxxx.com; # 域名 listen 80; rewrite ^(.*) https://$server_name$1 permanent; } server { listen 443 ssl; listen [::]:443 ssl ipv6only=on; ssl_certificate /etc/letsencrypt/live//fullchain.pem; ssl_certificate_key /etc/letsencrypt/live//privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live//chain.pem; .... 其他配置信息 }
備注: ${server_name}可以換成$host
2.重啟nginx
3.示例(以下是我們生產(chǎn)的配置)
server { listen 80; server_name www.test.com; rewrite ^(.*)$ https://${server_name}$1 permanent; } server { listen 443; server_name www.test.com; ssl on; ssl_certificate /etc/pki/CA/certs/214321311540956.pem; ssl_certificate_key /etc/pki/CA/certs/214321311540956.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; index index.php index.htm index.html; error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location ~ \.php { root /alidata/www/html; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; set $path_info ""; set $fastcgi_script_name_new $fastcgi_script_name; if ($fastcgi_script_name ~* "^(.+\.php)(/.+)$" ) { set $fastcgi_script_name_new $1; set $path_info $2; } fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name_new; fastcgi_param SCRIPT_NAME $fastcgi_script_name_new; fastcgi_param PATH_INFO $path_info; } location / { root /alidata/www/html; index index.php index.html index.htm; if (!-e $request_filename){ rewrite ^(.*)$ /index.php$1 last; } } }
到此這篇關于如何使用Nginx配置將80端口重定向到443端口的文章就介紹到這了,更多相關Nginx端口80重定向443內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Nginx結合Openresty通過Lua+Redis實現(xiàn)動態(tài)封禁IP
為了封禁某些爬蟲或者惡意用戶對服務器的請求,我們需要建立一個動態(tài)的 IP 黑名單,本文主要介紹了Nginx結合Openresty通過Lua+Redis實現(xiàn)動態(tài)封禁IP,感興趣的可以了解一下2023-11-11