nginx设置域名带www和不带www的问题

前几天一直觉得自己网站有点问题,具体哪儿有问题还说不上来,今天证实了一下,果真,浏览器路径输入“liushuqing.com”出现了nginx的欢迎页面,输入“www.liushuqing.com”出现了这个博客网站。

我当时就懵逼了,紧接着看了一下nginx官网那狗屎一般的文档,大概知道了这是因为我只是在sites-available里面配了一个server,忘记了nginx本省还有一个defalut server,这个会影射到它自己的一个静态页面,也就是那个“welcome to nginx!”

然后有那么几个瞬间我是大喜过望望穿秋水水到渠成认为自己得了便宜,买了一个域名却可以相当于有了两个,也就是说我完全可以在“www.liushuqing.com”和“liushuqing.com”上面搭建两个不同的网站,互不干扰。我次奥这个太爽了。

然后我怀揣着一颗惴惴不安的少男之心吧“liushuqing.com”布置成了一个人畜无害的静态网站然后准备去骗一个前端妹子说送她一个礼物什么的。

谁知道查了一圈资料,发现这种行为居然被做运维的孩子强烈鄙视了,据说这种做法对搜索引擎及其不友好,会产生误导,而且用户体验有问题,如果想部署两个域名可以在nginx里面配置虚拟机(貌似我已经在不知不觉中做了这个了)。

思考再三,还是决定吧“liushuqing.com”重定向到有www的这个来,毕竟国际惯例,另外,目前来说,两个域名貌似也没啥用。

这儿贴一下nginx的配置结构 先看一下全局配置文件nginx.conf

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # nginx-naxsi config
    ##
    # Uncomment it if you installed nginx-naxsi
    ##

    #include /etc/nginx/naxsi_core.rules;

    ##
    # nginx-passenger config
    ##
    # Uncomment it if you installed nginx-passenger
    ##

    #passenger_root /usr;
    #passenger_ruby /usr/bin/ruby;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

最重要的就是最后两行include,也就是引入的server配置 居然是个link。。。。

点击去看一下好了 default(nginx默认)配置

    server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    # Make site accessible from http://localhost/
    server_name localhost;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
        # Uncomment to enable naxsi on this location
        # include /etc/nginx/naxsi.rules
    }

然后就是ghost(自己配的)配置

server {  
listen 0.0.0.0:80;  
server_name www.liushuqing.com;  
access_log /var/log/nginx/liushuqing.com.log;

location / {  
proxy_set_header X-Real-IP $remote_addr;  
proxy_set_header HOST $http_host;  
proxy_set_header X-NginX-Proxy true;  
proxy_pass http://127.0.0.1:2368;  
proxy_redirect off;  
    }
}

问题就比较清晰了,default拦截了liushuqing.com,然后就相当于另一个网站了。修改一下它

重启nginx和ghost:
nginx -s reload
nginx -s reopen
forever restartall
好了,现在全世界都安静了

刘摸鱼

退堂鼓表演艺术家

杭州