在服务器 laravel+nuxt+nginx 上部署时所有路由 return 404
All routes return 404 when deploying on server laravel+nuxt+nginx
我正在尝试将 Laravel 6.2 作为后端和 Nuxt 2.11 作为前端(通用模式)上传到服务器,但在上传每个路由后 returns laravel 404,我也在用nginx反向代理(生产模式)
使用这个 laravel-nuxt 包 https://github.com/cretueusebiu/laravel-nuxt
上传步骤
1- 上传后端文件和文件夹(app,bootstrap,client,config,database,routes,storage,vendor,package.json and lock,composer.json and lock)
2-上传前端文件和文件夹(.nuxt,以及我的客户端文件夹中的所有内容)
3-在我的服务器中,我在 nginx.conf include /etc/nginx/sites-enabled/*.conf;
的末尾添加了一个新行
4- 然后在 /etc/nginx/sites-enabled 我有 default.conf 具有以下内容
server {
# server on port 80 (default http port)
listen 80;
server_name rabter.com;
# proxy for frontend
location / {
# nuxt server url
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
# proxy for api
location /api/* {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
# laravel server url
proxy_pass http://localhost:8000;
proxy_redirect off;
}
}
启用我的服务器块并重新启动 Nginx
ln -s /etc/nginx/sites-available/default.conf /etc/nginx/sites-enabled/
5- 我将设置 pm2 服务器,所以我 运行 pm2 启动 Laravel-nuxt 开始监听端口 3000(午餐 nuxt)
此时我访问我的站点 returns 404 在所有路由上无一例外
我也遇到了这个 https://github.com/iliyaZelenko/laravel-nuxt/issues/1#issuecomment-491484474
我认为这基本上是我想做的甚至尝试了 nginx 代码但没有工作
我的 web.php 中有 0 条路由,所有路由都在 api.php.Also 这个项目在本地主机上工作正常,无论是开发模式还是生产模式,但是当我移动到服务器时,它都是 404。
正确的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 你的可以不同
话虽如此,我们正在将没有 www 的 80 和 433 重定向到 www,然后进行反向代理,如果反向代理是 404 我们尝试 @php 并且在底部我们使用 php-fpm 到 运行 我们的 php 代码
我几乎花了 2 周时间学习 nginx 并编写不同的配置,直到我想出这个
我正在尝试将 Laravel 6.2 作为后端和 Nuxt 2.11 作为前端(通用模式)上传到服务器,但在上传每个路由后 returns laravel 404,我也在用nginx反向代理(生产模式)
使用这个 laravel-nuxt 包 https://github.com/cretueusebiu/laravel-nuxt
上传步骤
1- 上传后端文件和文件夹(app,bootstrap,client,config,database,routes,storage,vendor,package.json and lock,composer.json and lock)
2-上传前端文件和文件夹(.nuxt,以及我的客户端文件夹中的所有内容)
3-在我的服务器中,我在 nginx.conf include /etc/nginx/sites-enabled/*.conf;
4- 然后在 /etc/nginx/sites-enabled 我有 default.conf 具有以下内容
server {
# server on port 80 (default http port)
listen 80;
server_name rabter.com;
# proxy for frontend
location / {
# nuxt server url
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
# proxy for api
location /api/* {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
# laravel server url
proxy_pass http://localhost:8000;
proxy_redirect off;
}
}
启用我的服务器块并重新启动 Nginx ln -s /etc/nginx/sites-available/default.conf /etc/nginx/sites-enabled/
5- 我将设置 pm2 服务器,所以我 运行 pm2 启动 Laravel-nuxt 开始监听端口 3000(午餐 nuxt)
此时我访问我的站点 returns 404 在所有路由上无一例外 我也遇到了这个 https://github.com/iliyaZelenko/laravel-nuxt/issues/1#issuecomment-491484474 我认为这基本上是我想做的甚至尝试了 nginx 代码但没有工作
我的 web.php 中有 0 条路由,所有路由都在 api.php.Also 这个项目在本地主机上工作正常,无论是开发模式还是生产模式,但是当我移动到服务器时,它都是 404。
正确的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 你的可以不同
话虽如此,我们正在将没有 www 的 80 和 433 重定向到 www,然后进行反向代理,如果反向代理是 404 我们尝试 @php 并且在底部我们使用 php-fpm 到 运行 我们的 php 代码
我几乎花了 2 周时间学习 nginx 并编写不同的配置,直到我想出这个