我无法搞清楚我的nginx配置。
我的配置应该强制使用https而不是www。允许使用某些子域 api.domain.com , api.staging.domain.com 。最后提到的目前是在另一个conf文件中配置的,没有附在这里。
目前我的问题是,这似乎允许www。我需要将www重定向到没有www。子域www在dns配置中设置为cname。
有人能帮助我吗?
server {
listen 54.00.00.00;
server_name 54.00.00.00;
rewrite .* https://domain.com$request_uri permanent;
}
server {
listen 80;
return 301 https://$host$request_uri;
}
server {
listen 443 default ssl;
server_name domain.com api.domain.com;
root /var/www/domain.com/current/web;
##
# Certificate Settings
##
ssl_certificate /etc/nginx/ssl/domain.com.pem;
ssl_certificate_key /etc/nginx/ssl/domain.com.key;
答案 0 :(得分:0)
问题在于server
server {
listen 80;
return 301 https://$host$request_uri;
}
匹配所有服务器,即使是www
的服务器,如果您要求http://www.example.com
,$host
将是www.example.com
,那么您最终会重定向到{{}带有https
的1}}版本。
如果你想捕捉所有并且仍然从拥有它的人那里剥离www
我建议最好在服务器名称中使用正则表达式
www