Nginx над Apache с Laravel дает проблемы с rewrite_mod

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>
1
задан 25 October 2014 в 15:46

1 ответ

Я понял это. Это то, что люди, пытающиеся сделать то же самое, должны действительно знать. Итак, вот мои акции.

Я пришел к решению со следующим:

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 для его настройки.

И это было мое решение .

0
ответ дан 24 May 2018 в 02:32

Другие вопросы по тегам:

Похожие вопросы: