Nginx
Nginx 萬用字元將所有內容重定向到 https 非 www 但子域轉到特定文件夾?
我剛剛安裝了 Let’s Encrypt 萬用字元證書,我想使用非 www 作為我的標準正則表達式來縮短伺服器塊。所以我希望做到以下幾點:
- http 非 www —> https 非 www
- http www —> https 非 www
- https www —> https 非 www
- http any —> https any 到特定文件夾,例如 /var/www/any
- https any —> https any 到特定文件夾,例如 /var/www/any
我這樣做對嗎?是否有太多重定向?我希望你能在這裡得到我想要的。
經過一些測試,我已經找到了答案……
# case 1 & 2... server { listen 80; listen [::]:80; server_name <domain> www.<domain>; return 301 https://<domain>$request_uri; } # case 3... server { listen 443 http2 ssl; listen [::]:443 http2 ssl; server_name www.<domain>; ... return 301 https://<domain>$request_uri; } # the main server block... server { listen 443 http2 ssl; listen [::]:443 http2 ssl; ... }
對於案例 4 和 5,我首先需要通過我的 DNS 中的 CNAME 記錄添加一個子域並將其指向我的主域,然後創建一個伺服器塊,其根文件夾對應於您想要的 server_name(子域)。
server { ... server_name <subdomain>.<domain> root /var/www/any ... }
還值得一提(避免域停放和與 IP 無關的域)並返回“444 Connection Closed without Response”…
server { listen 80 default_server; listen [::]:80 default_server; access_log off; log_not_found off; server_name _; return 444; }
關於不使用正則表達式重定向和避免 if 語句的參考:https ://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/