Nginx将所有http请求重写为www

时间:2013-05-06 06:21:19

标签: nginx

我的问题类似于here。但在我的情况下我使用的是Godaddy公共域名,它指向一个公共地址并路由到我的服务器,它有固定的私有IP地址(192.168.0.145)。如果我在nginx.conf中将服务器名称作为domain.com,则没有作品。但是,如果我给localdomain或服务器私有ip它即使我浏览http://domain.com也有效。我甚至尝试将域名添加到我的主机失败[127.0.0.1 domain_name]但没有运气。我通过网络搜索但我从未见过任何人在nginx.conf中放置私有IP或localdomain而不是域名地址。我确实需要将所有http://domain.name重定向到http://www.domain.com,但由于我无法放置我的域名,因此无法找到解决方法。我错过了一些明显的东西吗?

server {
        listen 80;
        server_name 192.168.0.145;
        location / {
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://localhost:8080;
        }
}

2 个答案:

答案 0 :(得分:0)

在您的服务器部分

server_name www.domain.com domain.com 192.168.0.145;

if ($host !~* ^www\.domain\.com$ ) {
    rewrite ^(.*)$ http://www.domain.com$1 permanent;
}

答案 1 :(得分:0)

这是一个棘手的解决方案,您定义了2个服务器,非www重定向到www

server{
    server_name domain.com;
    return 301 $scheme://www.domain.com$request_uri
}
server{
    server_name www.domain.com;
    #the rest of your normal config goes here
}

所有非www将匹配服务器#1,并将指向与服务器#2

匹配的格式