Nginx:将IP地址重定向到域名


12

使用以下Nginx配置:

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

    server_name isitmaintained.com;

    ...
}

server {
    listen 178.62.136.230:80;
    server_name 178.62.136.230;

    add_header X-Frame-Options "SAMEORIGIN";

    return 301 $scheme://isitmaintained.com$request_uri;
}

我试图重定向http://178.62.136.230/http://isitmaintained.com/,但是当我部署此配置时,我最终得到了一个Redirect loop或两个链接。

我究竟做错了什么?

Answers:


30

在第二个块上尝试:

server {
    listen 80;
    server_name 178.62.136.230;

    return 301 $scheme://isitmaintained.com$request_uri;
}

问题是第二个服务器块listen指令比第一个服务器块更具体,因此始终使用它。并且由于第二个块是该listen规范的唯一虚拟主机,因此始终使用它。


那讲得通。但是,当我申请,我得到了以下错误:nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32:(而且由于我的域名是不是长的时间没有任何意义。
马修那不勒斯

好吧,由于某种原因,您的设置需要更多存储空间来存储nginx中的虚拟主机服务器名称,因此您应该增加设置。
Tero Kilkanen 2014年

我很抱歉没有直接尝试,我确定出了点问题。但是您是对的,重定向现在可以正常工作!非常感谢:)
Matthieu Napoli 2014年

你是F *****的好人,解决了我的问题,被投票赞成,thnx
a_m_dev

3

你近了 您正在寻找的重写。

server {
    listen 178.62.136.230:80;
    server_name 178.62.136.230 isitmaintained.com;

    rewrite  ^/(.*)$  http://www.isitmaintained.com/$1 permanent;
}
server {
    listen 80;
    server_name www.isitmaintained.com;
    # Serve Stuff Here.
}

5
rewritereturn上面做的完全一样。
Tero Kilkanen 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.