我正在尝试建立一个 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
)
答案1
您应该Listen
向 Apache 配置中添加指令。您可以在其中找到 Listen 指令httpd.conf
并将其添加到那里Listen 9002
。
您可以在以下位置找到更多信息Apache 文档。
Listen 指令不实现虚拟主机 - 它仅告诉主服务器要监听哪些地址和端口。如果未使用任何指令,服务器将对所有接受的请求采取相同的行为。但是,可用于为一个或多个地址或端口指定不同的行为。要实现 VirtualHost,必须首先告知服务器监听要使用的地址和端口。然后应为指定的地址和端口创建一个部分来设置此虚拟主机的行为。请注意,如果为服务器未监听的地址和端口设置了,则无法访问它。