我在使我的索引与 nginx 一起工作以提供静态内容并将 php 传递到另一台服务器上的 apache 时遇到了一些小问题。
基本上,当我需要它在请求 xxx.co.uk/ 时在后端 apache 服务器上尝试 index.php 时。如果 nginx 服务器上不存在 index.php 或 index.html,我会得到 403 Forbidden。如果我请求 xxx.co.uk/index.php,行为将符合预期,并且 apache 会提供该页面。
有人能提出解决方案吗?我最初的想法是使用 try_files - 但具体如何使用我不确定 - 我的修改没有奏效!
我希望我已经说清楚了,如果没有,请询问,我会尝试进一步详细说明。
Nginx 设置:
server
{
listen 80;
server_name www.xxx.co.uk xxx.co.uk;
access_log /srv/www/xxx.co.uk/logs/access.log;
error_log /srv/www/xxx.co.uk/logs/error.log;
root /srv/www/xxx.co.uk/public_html;
index index.php index.html;
# deny access to apache .htaccess files
location ~ /\.ht
{
deny all;
}
location ~* ^.*\.php$ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.0.6:80;
}
}
和阿帕奇:
<VirtualHost 192.168.0.6:80>
ServerAdmin [email protected]
ServerName xxx.co.uk
ServerAlias xxx.co.uk www.xxx.co.uk
DocumentRoot /srv/www/xxx.co.uk/public_html/
ErrorLog /srv/www/xxx.co.uk/logs/error.log
CustomLog /srv/www/xxx.co.uk/logs/access.log combined
DirectoryIndex index.php
</VirtualHost>
答案1
您需要 atry_files
和 alocation
来放入它。
例子:
location / {
try_files $uri $uri/ =404;
}