2013-04-25 37 views
0

我剛剛安裝了nginx,併爲test.example.com創建了一個新配置。 哪個有效。Nginx具有default_server和一個ip地址上的多個域

但example.org指向我的服務器。現在,如果我轉到example.org,nginx會將我重定向到test.example.com。

我讀過你需要創建一個默認的服務器條目,例如返回444; 這就是我所做的。 這是我的網站配置:

server { 
    listen  IP:80; 
    server_name test.example.com; 
    server_tokens off; 
    root /nowhere; 
    rewrite^https://test.example.com$request_uri permanent; 
} 
server { 
    listen IP:443; 
    server_name test.example.com; 
    server_tokens off; 
    root [...]; 

[...] 
} 

我在nginx.conf加入之前(也試過之後)「包括在/ etc/nginx的/啓用的站點 -/*」;默認的服務器條目

server { 
    # use default instead for nginx 0.7.x, default_server for 0.8.x+ 
    listen IP:80 default_server;  

    server_name _; 
    return 444; 
} 

對我來說這看起來是正確的。但我仍然從example.org重定向到test.example.com。

+0

由於這不是編程相關的,所以在這裏是不重要的。它更適合於serverfault.com – 2013-04-25 14:44:48

回答

1

您應該沒有在默認的server_name中設置server_name。它確實需要在nginx配置中的實際服務器塊之前。

444是一個奇怪的錯誤返回。你應該返回一個404來表示找不到服務器,而不是定製的Nginx錯誤代碼。

編輯

對於SSL不工作,你不會出現在你的配置文件實際上已經設置SSL證書或打開SSL上。

server { 
    listen 443 default_server ssl; 
    ssl_certificate  /usr/local/nginx/conf/cert.pem; 
    ssl_certificate_key /usr/local/nginx/conf/cert.key; 

    server_name test.example.com; 
    server_tokens off; 
    root [...]; 
} 
+0

您將需要顯示您的整個配置。提供的smaples並不多說。 – Bart 2013-04-25 21:26:24