二级域名www和顶级域名的nginx配置注意事项

一个顶级域名下面可以配置多个二级域名,而通常我们直接访问顶级域名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;
        }
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容