一个顶级域名下面可以配置多个二级域名,而通常我们直接访问顶级域名http://dimonho.com的时候,默认应该让用户跳转到http://www.dimonho.com。
一开始,在配置nginx的时候,我是直接写成下面那样的:
server{
listen 80;
server_name dimonho.com www.dimonho.com;
location / {
proxy_pass http://192.168.1.92:18080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 100m;
}
}
这样无论在浏览器地址栏输入dimonho.com还是www.dimonho.com都能访问到我的项目,但这样有个问题,当同一个用户在一个浏览器中访问这两个不同的url的时候,session是不一样的,这时候你会发现,在dimonho.com中登陆后,再去访问www.dimonho.com仍然需要重新登陆,同样的在dimonho.com中退出后,www.dimonho.com并没有退出。
解决方式是当用户在浏览器中直接输入顶级域名访问的时候,我们应该将其重定向到www.dimonho.com下,统一用户的访问入口。将nginx稍作修改,如下:
server{
listen 80;
server_name dimonho.com www.dimonho.com;
if ($host = 'dimonho.com'){
rewrite ^/(.*)$ http://www.dimonho.com/$1 permanent;
}
location / {
proxy_pass http://192.168.1.92:18080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 100m;
}
}