2012-04-17 94 views
4

我想将我的服务器的IP重写为域名url,但我最难找出如何实现这一点。重写 - 将服务器IP转发到域名网址nginx

例如,当我在浏览器中输入213.34.54.xxx时,我希望它被重写为mydomain.com而不显示IP地址。

我现在的配置如下:

/etc/nginx/nginx.conf

user www-data; 
worker_processes 2; 
error_log /var/log/nginx/error.log; 
pid /var/run/nginx.pid; 

events { 
    worker_connections 1024; 
} 

http { 
    include  /etc/nginx/mime.types; 
    default_type application/octet-stream; 
    access_log /var/log/nginx/access.log; 
    server_names_hash_bucket_size 64; 
    sendfile  on; 

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

的/ etc/nginx的/启用的站点 -/MYDOMAIN

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

    server { 
     listen 80 default; 
     server_name localhost; 
     root /home/deployer/apps/mydomain/current/public; 

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

     try_files $uri/index.html $uri @unicorn; 
     location/{ 
     proxy_set_header Host $http_host; 
     proxy_set_header X-Real-IP $remote_addr; 
     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; 
    } 

我试过把这个添加到服务器指令中mydomain配置文件:

rewrite^$scheme://mydomain.com$request_uri redirect; 

但我的浏览器中出现了太多的REDIRECTS错误。

最起码,我能够防止IP地址显示在服务器指令,使用此:

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

然而,这个被列为nginx的网站上的缺陷之一:(

什么,我可能是做错了任何见解将不胜感激!

谢谢!

回答

-1

在您Nginx的配置文件,添加以下服务器块。

server { 
listen 80 default; 
rewrite^http://your_domain_name.com$request_uri permanent; 
} 
11

其实上面的答案不起作用(至少对我而言)。我想因为问题已经提出了提问者已经找到他的解决方案,但是因为我搜索了谷歌和很多链接去这里,也许这个解决方案将帮助其他人,只需将其添加到您的conf文件:

server { 
     server_name 162.13.171.178; 
     # you can add other server_name if you need other IPs 
     # or domain names such as without the www 

     add_header X-Frame-Options "SAMEORIGIN"; 

     return 301 $scheme://www.example.com$request_uri; 
} 
+0

不工作,重定向太多 – tgdn 2016-04-25 15:06:42

0

添加新的服务器实例,以我的域名的虚拟主机文件的底部如下工作对我来说:

server { 
listen xxx.xxx.xxx.xxx:80; 
server_name xxx.xxx.xxx.xxx; 
rewrite^http://example.com$request_uri? permanent; 
} 

/etc/init.d/nginx重装

注:我添加的唯一原因这个重写是因为索姆ehow我的一台服务器的IP地址最终出现在Google搜索结果中,这可能会导致重复内容出现问题。如果这没有发生,我不会加重重写。你可以检查,看看是否你的服务器IP是在搜索结果中通过运行一个搜索您的IP地址:

网站是:xxx.xxx.xxx.xxx

0

你需要写不同的服务器块对于每个重写规则

# say this is your default BIG block 
server { 
    listen 80 default_server; 
    server_name example.com; 
    passenger_enabled on; 
    rails_env production; 
    root /var/www/your_app/current/public/; 
} 

# forwarding to main block 
server { 
    listen 80; 
    server_name www.example.com; 
    return 301 http://example.com$request_uri; 
} 

# forwarding to main block 
server { 
    listen 80; 
    server_name 55.55.55.55; 
    return 301 http://example.com$request_uri; 
} 
+1

可以在一个服务器块中列出多个'server_name'条目。你最后的两个街区可以凝聚成一个街区。 – crftr 2017-02-06 20:26:09

+0

任何人都可以帮助我按照crftr的建议编辑我的解决方案吗? =) – 2017-02-09 22:07:31

0

也可以使用一个服务器块从许多IP重定向。

server { 
    listen 80; 
    listen 443; 
    server_name 172.20.0.2 172.20.0.3 172.20.0.4; 

    return 301 $scheme://www.yourdomain.com$request_uri; 
} 

碰巧还有一个可以使用此策略解决的常规PCI合规性查找(泄漏私有IP)。