Я пытаюсь использовать nuxtjs в качестве интерфейса и laravel в качестве бэкэнда с NGINX
После добавления ssl и перенастройки файла .conf nginx, теперь мой error_page
линия не работает и не переходит на location @php
но вместо этого он выдает интерфейс 404 (страница с ошибкой nuxt)
server{
listen 45.xx.xxx.xxx:80;
server_name example.com www.example.com;
root /home/example/core/public/;
return 301 https://www.example.com$request_uri;
}
server {
listen 45.xx.xxx.xxx:443 ssl;
# NOTE: SSL configuration is defined elsewhere
server_name example.com;
ssl_certificate /etc/pki/tls/certs/example.com.cert;
ssl_certificate_key /etc/pki/tls/private/example.com.key;
return 301 https://www.example.com$request_uri;
}
server {
listen 45.xx.xxx.xxx:443 ssl;
server_name www.example.com;
ssl_certificate /etc/pki/tls/certs/example.com.cert;
ssl_certificate_key /etc/pki/tls/private/example.com.key;
root /home/rabter/core/public/;
index index.php;
access_log /var/log/nginx/example.com.bytes bytes;
access_log /var/log/nginx/example.com.log combined;
error_log /var/log/nginx/example.com.error.log error;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
location / {
root /home/example/core/public/;
index index.php;
proxy_set_header Connection "keep-alive";
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_http_version 1.1;
proxy_pass https://45.xx.xxx.xxx:3000$request_uri;
error_page 404 = @php;
}
location @php {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param HTTPS $https;
fastcgi_pass 45.xx.xxx.xxx:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
}
Перед добавлением ssl error_page 404 = @php
работал без проблем, и вызовы api были сделаны. похоже, что nginx игнорирует строку error_page. Спасибо за любую помощь
правильный файл конфигурации для ssl
Файл конфигурации http
server {
listen your-server-ip:80;
server_name example.com;
return 301 https://www.example.com$request_uri;
}
Файл конфигурации ssl
server {
listen your-server-ip:443 ssl;
server_name example.com;
return 301 https://www.example.com$request_uri;
}
server {
listen your-server-ip:443 ssl;
server_name www.example.com;
ssl_certificate /etc/pki/tls/certs/example.com.bundle;
ssl_certificate_key /etc/pki/tls/private/example.com.key;
root /home/example/core/public/;
index index.php;
access_log /var/log/nginx/example.com.bytes bytes;
access_log /var/log/nginx/example.com.log combined;
error_log /var/log/nginx/example.com.error.log error;
location / {
proxy_set_header Connection "keep-alive";
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_http_version 1.1;
proxy_pass https://your-server-ip:3000$uri;
proxy_intercept_errors on;# In order to use error_page directive this needs to be on
error_page 404 = @php;
}
location @php {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass your-server-ip:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
}
Имейте в виду, что мой порт был 3000
ваш может быть другим
fastcgi_pass тоже может указывать на носок, но я добавил его напрямую
Порт fastcgi_pass установлен на 9000 в моем случае Ваш может быть другим
при этом, как говорится, мы перенаправляем 80 и 433 без www к www а затем выполняем обратный прокси, если обратный прокси - 404, мы пробуем @php, а внизу мы используем php-fpm для запуска нашего php-кода
Я почти 2 недели изучал nginx и писал разные конфигурации, пока не придумал этот