Linux
無法讓 Nginx 上的虛擬主機(伺服器塊)工作
我剛開始使用 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