javaLuo / react-luo

React Automatically - 保持最新技术 react18 hooks router6 webpack5 babel7 antd4

Home Page:https://isluo.com/work/pwa/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

nginx 代理的问题

zhans1993 opened this issue · comments

我现在把工程发布之后,需要使用nginx 做代理,但是怎么配置都无法成功,这是我的location 配置,需要怎么更改呢? 谢谢
upstream dist {
server localhost:8888 weight=3;
}
server {
listen 8082;
server_name localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

   location /dist {
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Nginx-Proxy true;	
    proxy_set_header Connection "";
        proxy_pass http://dist;
        root   html;
        index  index.html index.htm;
    }
commented

访问不到还是什么
你确定index.html文件是放在/dist下的吗
把文件放到服务器上,路由访问到 index.html就行

index.html 和 dist 是同级,不在dist 下面

commented

能访问到index.html吗

http://localhost:8082/dist/index.html 是可以访问到index.html 的

没有代理的工程 http://localhost:8888/home 可以访问到页面
代理的nginx http://localhost:8082/dist/home 页面错误 访问的资源是http://localhost:8082/dist/dist/app.d66600.js

commented

额,那是什么问题,无法加载JS和CSS吗?
把webpack.production.config.js中的输出配置改成这样:
`
output: {

    path: path.resolve(__dirname, 'build/dist'), 

    publicPath: 'dist/',

    filename: '[name].[hash:6].js',

    chunkFilename: '[name].[hash:6].chunk.js',

},

`

是的,无法加载js 和css, 现在的output 就是这样配置的
就是js css 资源 多带一层 dist
webpack 配置就是用的你写的那个
主要是想nginx 代理之后 加一层 dist 字段分隔,不直接在端口下走路由
是不是工程需要改呢?

commented

等我配个nginx试一下

commented

没有问题额,我是这么配的
`
server {

listen 80;

server_name gd.isluo.com;

location / {

proxy_pass http://127.0.0.1:8888;

proxy_redirect off;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

error_page 404 500 502 503 504 /50x.html

location = /50x.html {

root html;

}

}
`

我在服务器上试的,用了Tomcat,Nginx代理到Tomcat.
我对Nginx也不是很了解。如果不行,你问下身边的后台程序员,后台程序员一般都知道这个。

我知道这样配,问题是这样配的话一个程序就占用了一个端口,,端口有限 主要是希望 80/项目a
80/项目b 多个项目功用一个端口

commented

现在你这个路径访问不到 http://localhost:8082/dist/dist/app.d66600.js
是不是要配个静态文件访问路径什么的

那么多资源总不能一个一个写吧,,而且怎么保证不和别的项目的资源冲突呢,就是这个愁啊

commented

就在你这个server{ } 里面再加一个:
location ~*/dist/{
root /dist/
}
就写一个,能访问到http://localhost:8082/dist/dist就行了
我不知道这样写对不对,大致是这个意思

还是不行 ,我试试其他办法吧,你们项目不用nginx代理的么,有类似思路么。。谢谢
如果不代理的话,本地工程所有路由也加一层呢

commented

用的,但都是后台在处理。
我等会儿去问下后台是怎么弄的

额,如果项目部署在服务器二级目录呢?