基本上,我正在尝试重定向用户:
到https://domain.com/。我目前的Nginx配置如下:
upstream app_server {
# Bindings to the Gunicorn server
server 127.0.0.1:8002 fail_timeout=0;
}
server {
server_name "~^www\.(.*)$" ;
return 301 https://$1$request_uri ;
}
server {
# Access Logs
access_log path_to/nginx-access.log;
error_log path_to/nginx-error.log;
listen 443 ssl;
server_name _;
client_max_body_size 4G;
keepalive_timeout 5;
root another_path;
ssl_certificate path_to.crt;
ssl_certificate_key path_to.key;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://app_server;
break;
}
}
error_page 500 502 503 504 /500.html;
location = /500.html {
root %(PROJECT_PATH)s/templates/public;
}
}
问题是我的证书只对domain.com有效(不带www前缀),因此用户在访问最后一个地址时会收到错误(https://www.domain.com)。
我错过了什么?如何将https://www.domain.com重定向到https://domain.com?
答案 0 :(得分:0)
我认为这里的问题是你没有在你的第一个服务器块中捕获https://www.domain.com。如果排除listen
指令,则默认情况下该服务器块将侦听80。
为此特殊情况创建另一个服务器块,如下所示:
server {
listen 443 ssl http2 deffered;
server_name www.domain.com;
return 301 https://domain.com$request_uri;
}