2013-11-20 121 views
3

我已經完成了我的前期研究,但似乎無法找到如何正確配置nginx接受子域名。配置一個子域名的Nginx

我現在有它正確配置mydomain.com,但不analytix.mydomain.com:

server { 
     listen  80; 
     server_name  *.mydomain.com; 
     access_log /home/ubuntu/virtualenv/mydomain/error/access.log; 
     error_log /home/ubuntu/virtualenv/mydomain/error/error.log warn; 
     connection_pool_size 2048; 

     fastcgi_buffer_size 4K; 
     fastcgi_buffers 64 4k; 

     root /home/ubuntu/virtualenv/mydomain/homelaunch/; 

     location /static/ { 
      alias /home/ubuntu/virtualenv/mydomain/homelaunch/static/; 
     } 

     location/{ 
      proxy_pass http://127.0.0.1:8001; 
      proxy_set_header Host $host; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"'; 
     } 
    } 

server_name聲明接受<anythinghere>.mydomain.com這是很好的。

如果我訪問analytix.mydomain.com,它拋出一個HTTP 500默認這是很好的,因爲它從現有的應用程序在mydomain.com

您扔它已經傳播到這個服務器我試圖訪問它。

我該如何指定一個文件夾,在路徑中,以容納analytix.mydomain.com的內容?我會假設我需要更改nginx conf中的屬性(如上所示)

回答

18

創建一個新的server塊,將server_name設置爲所需的域。 Nginx的正常目錄和文件結構如下所示:

/etc/nginx 
| 
|---- /sites-available 
|  | 
|  |---- default.conf 
| 
|---- /sites-enabled 
     | 
     |---- default.conf -> ../sites-available/default.conf 

你必須創建在sites-available一個新的文件,在它的新server塊爲您的子域名並創建符號鏈接到新的文件sites-enabled。一個簡單的nginx重新加載將會帶來新的服務器。

新的文件結構如下所示:

/etc/nginx 
| 
|---- /sites-available 
|  | 
|  |---- analytix.conf 
|  | 
|  |---- default.conf 
| 
|---- /sites-enabled 
     | 
     |---- analytix.conf -> ../sites-available/analytix.conf 
     | 
     |---- default.conf -> ../sites-available/default.conf 

以下是涉及到非常快,直接在服務器上執行此命令:

# cd /etc/nginx/sites-available 
# cat default.conf > analytix.conf 
# editor analytix.conf 

改線server_name *.mydomain.com;server_name analytix.mydomain.com

# ln -s analytix.conf ../sites-enabled/ 
# nginx -t 

只有當它說你的配置沒問題(它應該是)時纔會繼續。

# service nginx restart 

就是這樣(請注意,上述所有的命令都是爲了一個基於Debian的發行版,如果你使用別的一些命令可能會有所不同)。


爲了提供您的服務器上的其他軟件的內容,你必須改變root指令在你的配置,指向其它軟件的文檔根目錄。

# editor analytix.conf 

變化root /home/ubuntu/virtualenv/mydomain/homelaunch/;root /path/to/other/software;並重新加載nginx的。

# nginx -t && service nginx reload 

就是這樣,你的新應用程序應該現在就開始服務。

+1

+1。精彩的解釋。 – slayedbylucifer

+1

感謝您的回答。我遇到的唯一問題是使用l​​n -s analytix.conf。/ sites-enabled /'''但是當我將文件更改爲絕對路徑時,它按預期運行 - '''ln -s /etc/nginx/sites-available/analytix.conf ../ sites-enabled /'' ' –

+0

您需要在正確的目錄中執行,如答案中所示。 – Fleshgrinder