Nginx
使用 Nginx 通過 SSL 將非 www 重定向到 www
嘗試將 https://example.com 重定向到https://www.example.com時出現錯誤。
當我轉到https://example.com時,它不會重定向並返回 page/200 狀態。
我不想要這個,我希望它重定向到https://www.example.com。
當我去http://example.com>時,它會重定向到<https://www.example.com
有人可以告訴我哪裡出錯了嗎?
這是我的預設和預設 SSL 配置文件:
預設.conf
server { listen 80; server_name example.com; return 301 https://www.example.com$request_uri; }
預設-ssl.conf
upstream app_server_ssl { server unix:/tmp/unicorn.sock fail_timeout=0; } server { server_name example.com; return 301 https://www.example.com$request_uri } server { server_name www.example.com; listen 443; root /home/app/myproject/current/public; index index.html index.htm; error_log /srv/www/example.com/logs/error.log info; access_log /srv/www/example.com/logs/access.log combined; ssl on; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_certificate /srv/www/example.com/keys/ssl.crt; ssl_certificate_key /srv/www/example.com/keys/www.example.com.key; ssl_ciphers AES128-SHA:RC4-MD5:ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:RSA+3DES:!ADH:!AECDH:!MD5:AES128-SHA; ssl_prefer_server_ciphers on; client_max_body_size 20M; try_files $uri/index.html $uri.html $uri @app; # CVE-2013-2028 http://mailman.nginx.org/pipermail/nginx-announce/2013/000112.html if ($http_transfer_encoding ~* chunked) { return 444; } location @app { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://app_server_ssl; } error_page 500 502 503 504 /500.html; location = /500.html { root /home/app/example/current/public; } }
您
listen
在文件中缺少指令default-ssl.conf
。添加listen 443;
此指令server { server_name example.com; return 301 https://www.example.com$request_uri; }
預設情況下,如果你省略這個指令,nginx 會假設你想監聽 80 埠。這裡是這個預設行為的文件。
編輯:感謝@TeroKilkanen 的評論。
這是您的 default-ssl.conf 的完整配置
server { listen 443 ssl; server_name example.com; ssl_certificate /srv/www/example.com/keys/ssl.crt; ssl_certificate_key /srv/www/example.com/keys/www.example.com.key; return 301 https://www.example.com$request_uri; }
旁注:您可以將
ssl on;
指令替換listen 443 ssl;
為nginx 文件中的建議。