Nginx
如何將所有 Web 請求重定向到 Nginx 上的特定子域?
我有一個網站,我只想在以下位置提供請求:
abc.mywebsite.com
我希望有任何要求:
www.mywebsite.com mywebsite.com <anything that is not abc>.mywebsite.com
被定向到
abc.mywebsite.com
,因為我有專門的證書。如何編寫我的 conf 文件來完成此操作?這是我的conf文件:
server { listen 80 default_server; listen [::]:80 adefault_server; server_name _; return 301 https://$host$request_uri; } server { listen 443 default ssl; server_name abs.mywebsite.com; ssl on; ssl_certificate /etc/nginx/bundle.crt; ssl_certificate_key /etc/nginx/abc.mywebsite.com.key; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; root /home/mywebsite/public; try_files $uri/index.html $uri @app;
您需要
default_server
為 HTTP 和 HTTPS 設置一個塊。該塊將處理您的重定向。它看起來像這樣:
server { listen 80 default_server; listen [::]:80 default_server; return 301 https://abc.mywebsite.com$request_uri; }
此塊將任何請求重定向到任何虛擬主機
abc.mywebsite.com
和原始請求 URI。您可能想要剝離request_uri
,因為通常沒有匹配的頁面。server { listen 443 ssl default_server; listen [::]:443 ssl default_server; ... ssl_certificates here ... return 301 https://abc.example.com$request_uri; }
此塊將到達埠 443 的任何虛擬主機的任何請求重定向到
abc.example.com
原始 URI。使用 TLS,您需要為要重定向的域提供有效證書,並且需要正確設置它們才能完全正常工作。server { listen 443 ssl; server_name abc.example.com; ssl_certificate /etc/nginx/bundle.crt; ssl_certificate_key /etc/nginx/abc.mywebsite.com.key; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; root /home/mywebsite/public; try_files $uri/index.html $uri @app; }
這是
abc.example.com
.