如何将IP上的请求重定向到域

时间:2013-12-20 12:33:08

标签: nginx

每隔一段时间,有人试图通过公共IP而不是我们的某个域访问我们的网站(是的,我们有多个国家/地区特定域.dk,。,。等等。但是我们也有.com作为一般”)。

现在,我想将IP地址中的请求重定向到我们的www.domain.com域。我怎样才能在没有触及任何内容的情况下在nginx中执行此操作但请求直接转到IP?

这是我的nginx.conf

upstream unicorn {
  server unix:/tmp/unicorn.mysite.sock fail_timeout=0;
}

server {
  listen 80 default deferred;

  root /home/deployer/apps/mysite/current/public;
  proxy_set_header X-Request-Start "t=${msec}";
  if (-f $document_root/system/maintenance.html) {
    return 503;
  }
  error_page 503 @maintenance;
  location @maintenance {
    rewrite  ^(.*)$  /system/maintenance.html last;
    break;
  }

  location ~ ^/assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @unicorn;
  location @unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://unicorn;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;

}

所以问题是,如何修改它以重定向,例如http://123.123.123.123/some_pagehttp://www.mysite.com/some_page,但保留所有其他内容http://www.mysite.dk/some_page不变?

1 个答案:

答案 0 :(得分:1)

您可以使用以下指令设置一个catchall服务器:

listen 80 default_server;
server_name _;

如果您有多个服务器节,则可以使用default_server指定在主机名与任何其他server_name条目不匹配时使用的配置。使用ip号符合此方案。 server_name _;行充当空server_name条目。

如果您的某个服务器有多个域名,这也很有用。