2013-07-10 113 views
30

我是Nginx的新手,我試圖讓子域名工作。nginx - 兩個子域配置

我想要做的就是把我的域(姑且稱之爲example.com),並添加:

  • sub1.example.com
  • sub2.example.com,並且也有
  • www.example.com可用。

我知道如何使用Apache來做到這一點,但Nginx是一個真正的頭部劃痕。

我運行Debian 6

我目前/etc/nginx/sites-enabled/example.com:

server { 
    server_name www.example.com example.com; 
    access_log /srv/www/www.example.com/logs/access.log; 
    error_log /srv/www/www.example.com/logs/error.log; 
    root /srv/www/www.example.com/public_html; 

    location/{ 
     index index.html index.htm; 
    } 

    location ~ \.php$ { 
     include /etc/nginx/fastcgi_params; 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME /srv/www/www.example.com/public_html$fastcgi_script_name; 
    } 
} 

它正在努力成爲example.com和www.example。 COM。

我試圖在同一文件中添加第二個服務器模塊,如:

server { 
     server_name www.example.com example.com; 
     access_log /srv/www/www.example.com/logs/access.log; 
     error_log /srv/www/www.example.com/logs/error.log; 
     root /srv/www/www.example.com/public_html; 

     server { 
      server_name sub1.example.com; 
      access_log /srv/www/example.com/logs/sub1-access.log; 
      error_log /srv/www/example.com/logs/sub1-error.log; 
      root /srv/www/example.com/sub1; 
    } 
     location/{ 
      index index.html index.htm; 
     } 

     location ~ \.php$ { 
      include /etc/nginx/fastcgi_params; 
      fastcgi_pass 127.0.0.1:9000; 
      fastcgi_index index.php; 
      fastcgi_param SCRIPT_FILENAME /srv/www/www.example.com/public_html$fastcgi_script_name; 
     } 
} 

沒有運氣。有任何想法嗎?我非常感謝任何反饋。

+0

我應該提到:sub1.example.com的最終目標是轉到example.com/sub1和sub2.example.com轉到example.com/sub2。我希望這是有道理的。 – boredemt

回答

43

的錯誤是把服務器模塊的服務器模塊內,你應該關閉主服務器塊,然後打開該子域

server { 
    server_name example.com; 
    # the rest of the config 
} 
server { 
    server_name sub1.example.com; 
    # sub1 config 
} 
server { 
    server_name sub2.example.com; 
    # sub2 config 
} 
4

你只需要添加下面一行代替一個新的您的server_name

server_name xyz.com *.xyz.com; 

並重新啓動Nginx。而已。

+9

如果您希望子域指向服務器上的其他資源,而不是位置www.example.com的資源,該怎麼辦? – courtyen