源码分享|精品php源码|免费源码-时光博客

Nginx 禁止未绑定的域名访问 结果原来的绑定的域名也访问不了了

摘要:nginx的虚拟主机通过HTTP请求中的Host值来找到对应的虚拟主机配置,如果找不到呢?那 nginx就会将请求送到指定了 default_server 的 节点来处理
nginx的虚拟主机通过HTTP请求中的Host值来找到对应的虚拟主机配置,如果找不到呢?那 nginx就会将请求送到指定了 default_server 的 节点来处理。
通过上面的配置,对于未绑定的域名指向你的服务器时,由于匹配不到你配置的虚拟主机域名,则会默认使用上面的这个虚拟主机,然后直接返回404,这样就达到禁止对未绑定域名的访问了。
至于server_name为什么是_,其实它仅仅是许多无效的域名中的一个代表,与任何真实的名字永远不会相交。其它无效的名称,如“ – “ 和” !@# “也可同样使用。

这样还是有一点问题,某些特别的地址,我需要用ip访问,其他的都禁止,如何配置呢?比如说我想让监控宝直接用ip访问我的机器的nginx状态信息,其他的用ip访问的所有请求都跳转到域名上。

1、因为在服务器上需要禁止未绑定域名的指向,需要在nginx的nginx.conf中添加如下内容:


server { 

        listen 80 default;

        return 500;

    }


加入如下内容后,确实其他域名不能访问了!


但是原先绑定的域名也不能访问了。


我用的是Nginx1.2.6


具体配置文件如下:

user  nginx; 

worker_processes  2; 

events { 

    use epoll; 

    worker_connections  2048; 


http { 

    include       mime.types; 

    default_type  application/octet-stream; 

    sendfile        on; 

    tcp_nopush     on; 

    tcp_nodelay   on; 

    keepalive_timeout  65; 

    upstream mystr{ 

    server 58.68.224.81:8080 srun_id=a; 

        server 58.68.224.81:8090 srun_id=b; 

        jvm_route $cookie_JSESSIONID|sessionid reverse;  //处理Session问题 

    }         


    server { 

       listen 80 default; 

       return 500; 

    } 

    server { 

        listen       80; 

        server_name  www.eoashare.org,www.eoashare.com,www.eoashare.net; 

        charset utf-8; 

        #access_log  logs/host.access.log  main; 

        location / { 

            #root  /opt/www/policy_publish; 

            #index  index.html index.htm; 

        proxy_pass http://mystr; 

        } 

        error_page  404              /404.html; 

        error_page   500 502 503 504  /50x.html; 

        location = /50x.html { 

            root   html; 

        } 

        location ~ .jsp$ { 

            proxy_pass  http://mystr; 

        } 

    } 

}