Apache-2.2
Nginx 代理不會將控制器/操作結構中的 url 傳遞給 Apache2
我使用 Nginx 作為代理,後面有 Apache2。目前配置有效,我可以訪問該站點。但是,PHP 應用程序是在 Zend Framework 2 上建構的,並且依賴於 /controller/action/ 結構中的 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>
Try_files線剎車網址。代理不需要它 - 刪除它。你可能也不需要這個塊:
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;