我使用 Nginx 作为代理,Apache2 在其后面。当前配置有效,我可以访问该网站。但是,PHP 应用程序是基于 Zend Framework 2 构建的,并且依赖于 /controller/action/ 结构中的 URL,而这些 URL 不会传递给 Apache2。这导致从主页到子页面的每个链接都断开,并重定向到我们的“页面未找到”页面。传递给 Apache2 的 URL 是 /index.php,而不是 /controllerX/actionY
Nginx(虚拟主机)配置
server {
listen 80;
root /var/www/talentina_dev/talentina-alpha-temp/public/;
index index.php index.html index.htm;
server_name dev-aws.talentina.com;
location / {
try_files $uri $uri/ /index.php;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}
location ~ \.php$ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}
location ~ /\.ht {
deny all;
}
}
要求是初始 URL 为“/”才能进入主页,我认为 location / {..} 结构涵盖了它。但是,由于我对此很陌生,因此我愿意接受建议。
提前致谢!
更新从 Apache2 添加 VirtualHost 文件
<VirtualHost 127.0.0.1:8080>
ServerAdmin ...
ServerName dev-aws.talentina.com
ServerAlias dev-aws.talentina.com
DocumentRoot /var/www/talentina_dev/talentina-alpha-temp/public/
php_value error_reporting 6135
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/talentina_dev/talentina-alpha-temp/public>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
答案1
Try_files线路制动 URL。如果使用代理,您不需要它 - 将其删除。您可能也不需要这个块:
location ~ \.php$ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;