Nginx
Apache 不監聽指定埠
我正在嘗試建立一個 Nginx + Apache-with-PHP-module 配置。它在 Debian 6 上工作,配置如下:
<VirtualHost 127.0.0.1:9002 > ServerName mysite.com AddDefaultCharset UTF-8 AssignUserID username username CustomLog /var/www/httpd-logs/mysite.com.access.log combined DocumentRoot /var/www/username/data/www/mysite.com ErrorLog /var/www/httpd-logs/mysite.com.error.log AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml AddType application/x-httpd-php-source .phps php_admin_value open_basedir "/var/www/username/data:." php_admin_value upload_tmp_dir "/var/www/username/data/mod-tmp" php_admin_value session.save_path "/var/www/username/data/mod-tmp" </VirtualHost> NameVirtualHost 127.0.0.1:9002 <Directory /var/www/username/data/www/mysite.com> Options -ExecCGI -Includes php_admin_value open_basedir "/var/www/username/data:." php_admin_flag engine on </Directory>
在一台新伺服器上,我正在執行 Ubuntu 16。當我重新啟動 apache2 服務並執行
netstat
時,127.0.0.1:9002 上沒有任何內容(即使 apache 正在執行)。正如預期的那樣,Nginx 給出了connect() failed (111: Connection refused) while connecting to upstream
錯誤。我試過了:
- 將埠 (9002) 更改為任何其他埠
- 註釋掉
NameVirtualHost
指令並更改VirtualHost 127.0.0.1:9002
為VirtualHost *:9002
- 禁用
firewalld
——從一開始就被禁用- 檢查 apache 是否載入了 .conf 文件——它確實載入了 (
apache2ctl -S
)
您應該將
Listen
指令添加到 Apache 配置。您可以在其中找到 Listen 指令httpd.conf
並在其中添加Listen 9002
。您可以在Apache 文件中找到更多資訊。
Listen 指令沒有實現虛擬主機——它只告訴主伺服器要監聽的地址和埠。如果沒有使用指令,伺服器將對所有接受的請求以相同的方式執行。但是,可用於為一個或多個地址或埠指定不同的行為。要實現 VirtualHost,必須首先告訴伺服器偵聽要使用的地址和埠。然後應該為指定的地址和埠創建一個部分來設置這個虛擬主機的行為。請注意,如果為伺服器未偵聽的地址和埠設置了 ,則無法訪問它。