在laravel+nuxt+nginx服务器上部署时,所有路由都返回404。

问题描述 投票:0回答:1

我想上传 两者 将Laravel 6.2作为后台,Nuxt 2.11作为前台(通用模式)导入服务器,但上传后每条路由都会返回laravel 404,我也在使用nginx反向代理(生产模式)

使用这个laravel-nuxt包 https:/github.comcretueusebiularavel-nuxt。

上传步骤

1-上传后台文件和文件夹(app,bootstrap,client,config,数据库,路由,存储,vendor,package.json and lock,composer.json and lock)

2-上传前端文件和文件夹(.nuxt,以及我的客户端文件夹中的所有内容)

3-在我的服务器中,我在nginx.conf的末尾添加了一行新的内容。 include /etc/nginx/sites-enabled/*.conf;

4-然后在etcnginxsites-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;
  }
}

启用我的服务器块并重启Nginxln -s etcnginxsites-availabledefault.conf etcnginxsites-enabled。

5-我会设置pm2服务器,所以我运行pm2启动Laravel-nuxt开始监听3000端口(Lunching nuxt)

在这一点上,我访问我的网站,它返回404的所有路线,没有例外我也遇到了这一点。https:/github.comiliyaZelenkolaravel-nuxtissues1#issuecomment-491484474。我认为这基本上是我想要做的,甚至尝试了nginx代码,但没有工作。

我的web.php里有0个路由,所有的路由都在api.php里,而且这个项目在本地主机上无论是开发模式还是生产模式都能正常工作,但是当我移动到服务器上时,它的所有路由都是404.

node.js laravel nginx nuxt.js laravel-6.2
1个回答
0
投票

正确的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也可以poiting到sock上,但我直接把它加了进去。

在我的例子中,fastcgi_pass端口被设置为9000,你的可能会有所不同

说了这么多,我们正在重定向80和433。没有wwwwww 然后做一个反向代理,如果反向代理是404,我们尝试@php,在底部我们使用php-fpm来运行我们的php代码。

我几乎花了2周的时间学习nginx,并编写了不同的配置,直到我想到了这个。

© www.soinside.com 2019 - 2024. All rights reserved.