Nginx

Apache 不監聽指定埠

  • May 19, 2017

我正在嘗試建立一個 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:9002VirtualHost *:9002
  • 禁用firewalld——從一開始就被禁用
  • 檢查 apache 是否載入了 .conf 文件——它確實載入了 ( apache2ctl -S)

您應該將Listen指令添加到 Apache 配置。您可以在其中找到 Listen 指令httpd.conf並在其中添加Listen 9002

您可以在Apache 文件中找到更多資訊。

Listen 指令沒有實現虛擬主機——它只告訴主伺服器要監聽的地址和埠。如果沒有使用指令,伺服器將對所有接受的請求以相同的方式執行。但是,可用於為一個或多個地址或埠指定不同的行為。要實現 VirtualHost,必須首先告訴伺服器偵聽要使用的地址和埠。然後應該為指定的地址和埠創建一個部分來設置這個虛擬主機的行為。請注意,如果為伺服器未偵聽的地址和埠設置了 ,則無法訪問它。

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