У меня есть конфигурация nginx, которая работает так, как предполагалось для одного из моих доменов, но при каждом указании другого домена на свой сервер наблюдается странное поведение перенаправления.
Проблема:
]
Я хочу перенаправить все запросы, сделанные на любую версию моего сайта без www.
Например:
http://example.com должен перенаправить на https: // www. example.com
http://m.example.com должен перенаправлять на https://www.example.com
Моя конфигурация работает так, как задумано для example.com, но всякий раз, когда я cname, скажите cdn.test.com на мой IP-адрес сервера с отдельным файлом конфигурации. Он перенаправляет на www.cdn.test.com
Это моя конфигурация для example.com:[12197 impression, а это конфигурация для cdn.test.com:
server {
listen 80;
server_name cdn.test.com;
root /home/.../files;
}
В вашей конфигурации первый блок server
- это default_server , который будет использоваться для всех запросов, которые не соответствуют более конкретному серверу.
Вместо верните 301 https: //www.$host$request_uri;
на default_server не используйте заголовок Host из запроса в качестве параметра для генерации перенаправления, так как это может стать всем типы неправильных вещей, вместо этого используйте return 301 https: //www.example.com$request_uri;
, чтобы всегда перенаправлять на www.example.com
Можно настроить как я
server {
#redirect all naked domains to https and www
if ($host = aihello.com) {
return 301 https://www.aihello.com$request_uri;
}
#redirect all unsecure www to secure www
if ($host = www.aihello.com) {
return 301 https://www.aihello.com$request_uri;
}
server_name aihello.com www.aihello.com default_server;
listen [::]:80 ipv6only=on;
listen 80 ;
return 404;
}