Nginx 禁止惡意IP指向訪問 & 二級域名的配置

簡單來講,咱們的nginx服務器配置以下便可,除非要有特定的處理php

server {  
    listen        80;  
    server_name   linuxidc.net  www.linuxidc.net;  
    root          /data/www;  
  
    location / {  
        index     index.html  index.php;  
    }  
  
    location ~* \.(gif|jpg|png)$ {  
        expires   30d;  
    }  
  
    location ~ \.php$ {  
        fastcgi_pass   localhost:9000;  
        fastcgi_param  SCRIPT_FILENAME  
                       $document_root$fastcgi_script_name;  
        include        fastcgi_params;  
    }  
}


要防止IP和惡意IP指向訪問 ,須要設置默認Serverhtml

若是不主動設置默認server,那麼第一個server就會被當作默認serverjava

    server  {  
       listen 80 default;  #表示默認匹配的端口(通常不會先匹配,等其餘Server配置項沒法匹配時自動轉移到該處)
       server_name _;      #表示訪問網站時,排除其餘server項的全部域名和ip地址
       return 500;  
   }

固然改爲下面的更好
linux

server {
listen 80 dufault;
server_name _;
rewrite ^(.*) http://www.yourdomain.com permanent;
}

從0.8.21版本開始,使用default_server關鍵詞nginx

default_server

經過這樣的方式,咱們能夠以下配置web

server {
    listen 80 dufault;
    server_name _;
    rewrite ^(.*) http://www.domain.com permanent;
}

server
   {
     listen       80;
     server_name  ~^(.+)?\.domain\.com$;
     index index.html;
     if ($host = domain.com){
         rewrite ^ http://www.domain.com permanent;
     }
     root  /data/wwwsite/domain.com/$1/;
   }

站點目錄服務器

站點的目錄結構應該以下:dom

/data/wwwsite/domain.com/www/

========================================================jsp

另一個問題,咱們可能須要用ip訪問某個目錄,但其餘目錄一切跳轉到主目錄工具

server {
listen 80 default_server;
server_name _;
        location /testdir{
            stub_status on;
            access_log  off;
        }
        location /{
            rewrite ^ http://www.nginxs.com$request_uri?;
        }
}


參考博客:

Nginx全局變量 http://www.jb51.net/article/24598.htm

Apache防止惡意指向 http://www.linuxidc.com/Linux/2011-06/37437.htm


------------------------------------------------------------

Nginx配置二級子域名

準備:須要泛域名 domain.com。

主機:www.domain.com 或 domain.com。

思路:將*.domain.com 解析到主機www.domain.com/*/ (*不能爲www或空)。

配置:

if ( $host ~* (\b(?!www\b)\w+)\.\w+\.\w+ ) {
	set $subdomain $1;
}
location / {
	root   D:\www\domain.com\$subdomain;
	index  index.html index.htm;
}

具體來講,配置以下也是一種可行的方式

server
   {
     listen       80;
     server_name  ~^(.+)?\.domain\.com$;
     index index.html;
     if ($host = domain.com){
         rewrite ^ http://www.domain.com permanent;
     }
     root  /data/wwwsite/domain.com/$1/;
   }

測試

環境:Window7 + Nginx1.1.15

ToDo:

一、安裝Nginx至:D:\nginx-1.1.15;安裝後路徑

二、修改nginx配置文件,見上;

三、新建web應用目錄:D:\www\;

四、新建domain.com項目目錄:D:\www\domain.com\;使用tree命令打印項目目錄部署以下:

D:\WWW
└─domain.com
    │  index.html (Welcome to www.domain.com!)
    ├─a
    │      index.html (www.domain.com/a/index.html)
    │      test.html (www.domain.com/test.html)
    ├─b
    │      index.html (www.domain.com/b/index.html)

五、修改hosts文件:C:\Windows\System32\drivers\etc\hosts,新增以下行:

127.0.0.1   www.domain.com
127.0.0.1   domain.com
127.0.0.1   a.domain.com

六、啓動nginx。

用例

訪問:http://www.domain.com/結果:Welcome to www.domain.com!
訪問:http://domain.com/ 結果:Welcome to www.domain.com!
訪問:http://a.domain.com/ 結果:www.domain.com/a/index.html
結果:http://a.domain.com/test.html結果:www.domain.com/a/test.html

結果:與用例相同!

補充:

請求參數做爲二級域名如何處理?Re:採用urlrewrite或相似url重寫的工具實現,步驟以下:www.domain.com/shop.jsp?shop_key=suning重寫成:www.domain.com/suning/注:前提是shop_key惟一。

相關文章
相關標籤/搜索