我使用Nginx作为Apache2的代理。 目前的configuration工作,我可以访问该网站。 然而,PHP应用程序是基于Zend Framework 2构build的,依赖于/ controller / action / structure中的url,并不会传递给Apache2。 这导致从主页到子页面的每个链接都被破坏,并redirect到我们的“找不到页面”页面。 传递给Apache2的url是/index.php而不是/ controllerX / actionY
Nginx(VirtualHost)configuration
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是“/”到达主页,我认为它覆盖了位置/ {..}结构。 不过,由于我对此很新,所以我愿意提供build议。
非常感谢提前!
更新从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行制动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;