Im работает Nginx над Apache.
I Nginx слушает порт 80 и прокси-сервер его на порт 8080, который Apache слушает.
Пока это работает Прямой url для файлов, таких как domain.com и domain.com/index.php.
Но если я перехожу к domain.com/test, он говорит 404 Not Found nginx/1.4.6 (Ubuntu), даже если я установил route для /test.
Вот моя конфигурация nginx для домена:
server {
listen 80;
access_log /var/www/site.com/logs/nginx.access.log;
error_log /var/www/site.com/logs/nginx.error.log;
root /var/www/site.com/public_html/public;
index index.php index.html;
server_name site.com;
location \ {
try_files $uri $uri/ index.php/$uri;
}
location ~* ^.*\.php$ {
if (!-f $request_filename) {
return 404;
}
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}
location ~ /\.(ht|git) {
deny all;
}
}
И вот конфигурация Apache для домена:
<VirtualHost *:8080>
ServerName site.com
DocumentRoot /var/www/site.com/public_html/public/
CustomLog /var/www/site.com/logs/apache.access.log common
ErrorLog /var/www/site.com/logs/apache.error.log
</VirtualHost>
Я понял это. Это то, что люди, пытающиеся сделать то же самое, должны действительно знать. Итак, вот мои акции.
Я пришел к решению со следующим:
server {
listen 80;
access_log /var/www/site.com/logs/nginx.access.log;
error_log /var/www/site.com/logs/nginx.error.log;
root /var/www/site.com/public_html/public;
index index.php index.html;
server_name site.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
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 $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}
location ~ /\.(ht|git) {
deny all;
}
}
Во-первых, я добавил настройки прокси для location / {, так как иначе возможно, не отправит вас в Apache.
Следующее, что я сделал, это удаление try_files из всех местоположений, поскольку Apache использует .htaccess для его настройки.
И это было мое решение .