我使用 apache 作为后端服务器,使用 nginx 作为前端服务器。Apache 监听端口 8080,nginx 监听端口 80。我的做法是让根目录指向每个虚拟主机的公共文件夹:
<VirtualHost *:8080>
ServerAdmin webmaster@localhost
ServerName site.com
ServerAlias site.com *.site.com
DocumentRoot /var/www/site.com/public
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/site.com/public/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
这是 nginx 配置:
server {
listen 80;
access_log /var/log/nginx.access.log;
error_log /var/log/nginx.error.log;
root /var/www/site.com/public;
index index.php index.html;
server_name site.com *.site.com;
location / {
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
proxy_cache one;
proxy_cache_use_stale error timeout invalid_header updating;
proxy_cache_key $scheme$host$request_uri;
proxy_cache_valid 200 301 302 20m;
proxy_cache_valid 404 1m;
proxy_cache_valid any 15m;
}
}
location ~ /\.(ht|git) {
deny all;
}
}
问题是 Apache 可以很好地解析域名(site.com:8080)
,但 nginx 却显示502错误的网关 (site.com:80)
。我尝试查看 error_log 和 access_log,但找不到任何提示为什么 nginx 不能工作。
编辑:问题是我无法包含 nginx 的独立配置。
答案1
nginx 以什么用户身份运行? 运行 nginx 的用户可能无法访问相关文件夹。