Linux

無法讓 Nginx 上的虛擬主機(伺服器塊)工作

  • July 29, 2014

我剛開始使用 Nginx 正在嘗試使用虛擬主機,但無法理解我的配置有什麼問題……

以下是啟用站點的文件夾的內容:

root@cavalier:/etc/nginx/sites-enabled# ls -hal
total 12K
drwxrwxr-x 2 root vnc  4.0K Jul 28 18:06 .
drwxr-xr-x 5 root root 4.0K Jul  1 16:58 ..
-rw-r--r-- 1 root root  360 Jul 28 18:07 default
lrwxrwxrwx 1 root root   31 Jul 28 18:01 example1.com -> ../sites-available/example1.com
lrwxrwxrwx 1 root root   33 Jul 28 17:57 example2.com -> ../sites-available/example2.com

預設伺服器塊的內容:

root@cavalier:/etc/nginx/sites-enabled# cat default
server {
listen 80 default_server;

root /www/example.com;
index index.html index.php;

location / {
try_files $uri $uri/ =404;
}

location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;

# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}

範例 1伺服器塊:

root@cavalier:/etc/nginx/sites-enabled# cat example1.com
server {
listen example1.com:80;
server_name www.example1.com example1.com;

root /www/example1.com;
index index.html index.php;

location / {
try_files $uri $uri/ =404;
}

location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;

# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}

example2伺服器塊:

root@cavalier:/etc/nginx/sites-enabled# cat example2.com
server {
server_name example2.com;

root /www/example2.com;
index index.php;

location / {
try_files $uri $uri/ =404;
}

location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;

# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}

出於某種原因,nginx 只為所有域提供來自 example1.com 的文件。它甚至會忽略預設的伺服器配置並直接進入 example1。

請原諒我,我是 nginx 的新手,並且大部分時間都在使用 Apache。我猜這應該相對簡單,我只是遺漏了一些東西……不過,我花了幾個小時試圖弄清楚,任何幫助將不勝感激。

Server1 與請求有最具體的匹配:IP:port,而另外兩個僅匹配埠。所以 nginx 為到達這個 IP:port 對的所有請求選擇 server1

引用自:https://serverfault.com/questions/616391