Apache-2.2

Nginx 代理不會將控制器/操作結構中的 url 傳遞給 Apache2

  • December 12, 2013

我使用 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;

引用自:https://serverfault.com/questions/560888