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

Я выполняю Nginx по Apache.

Я Nginx слушаю порт 80 и проксируйте его к порту 8080, который слушает Apache.

До сих пор это работает на прямой URL в файлы, как domain.com и domain.com/index.php.

Но если я перехожу в domain.com/test, это говорит 404 Not Found nginx/1.4.6 (Ubuntu) даже то, что я настроил a 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 в 03:46

2 ответа

Так как Вы уже используете nginx, почему не канава Apache+mod_php для php-fpm? Это избегает потребности в прокси.

После установки php5-fpm, добавьте этот vhost и включите его с sudo ln -s ../sites-available/example.com.conf /etc/nginx/sites-enabled/

# /etc/nginx/sites-available/example.com.conf
server {
    listen 80;    
    server_name     example.com;
    root            /var/www/example.com/public_html/public;

    access_log      /var/www/example.com/logs/access.log;
    error_log       /var/www/example.com/logs/error.log;

    # Disallow access to hidden files (.htaccess, .git, etc.)
    location ~ /\. {
        deny all;
    }

    # Some locations will never contain PHP files, handle it in the server
    location ~ ^/(robots.txt|favicon.ico)(/|$) {
        try_files $uri =404;
    }

    location = /index.php {
        # Disable direct access to the source code of index.php. If you have a
        # Laravel route for '/index.php', copy the @php_router block below.
        return 404;
    }

    location / {
        # Try to serve the static files, otherwise call into PHP
        try_files $uri @php_router;
    }

    location @php_router {
        include fastcgi_params;
        # If you move index.php outside public/, adjust it here.
        fastcgi_param SCRIPT_FILENAME $document_root/index.php;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
    }
}
1
ответ дан 11 November 2019 в 02:32

Я понял его. Вот что-то, что людей, пытающихся сделать должно действительно знать то же. Таким образом, вот мои доли.

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

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
ответ дан 11 November 2019 в 02:32

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

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