用 nginx 反代用友软件报 404 错误,有偿求助

2021-12-29 12:09:38 +08:00
 ddd270700
5273 次点击
所在节点    NGINX
62 条回复
ddd270700
2021-12-29 12:11:05 +08:00
用 nginx 作反向代理报 404 错,有偿求答

##背景
在公司内网上,一台服务器上作了反向代理远端的用友 U9 平台,用的是最简单的配置全部如下:
events {
works_connections 1024;
}

http {
include mime.types;
default_tpye application/octet-stream;

server {
listen 80;
server_name localhost;

location / {
proxy_pass http://10.108.11.149/U9/;
root html
index index.html index.htm
}
}
}

##出错
被代理远端用友软件,在服务器上是可以正常访问的;
服务器是 windows 系统,配置好后,启动 nginx ,在地址栏目输入 127.0.0.1 ,得到 404 错误。
将地址后面的斜杠〔“/”〕去掉再尝试,也是 404 错误。

## 其他的侧面尝试
报错后,在上面同样的配置文件上,仅仅修改了 proxy_pass 一行去测试其他的服务,服务器地址栏输入 127.0.0.1 访问,都没有问题,大致如下:
proxy_pass http://10.247.1.44; 成功;
proxy_pass http://10.161.64.77:9001; 成功;
ddd270700
2021-12-29 12:12:51 +08:00
希望大佬指点迷津。
50 元起步酬谢,802 分信用极好。
liuxu
2021-12-29 12:15:40 +08:00
location /U9/ {
proxy_pass http://10.108.11.149;



location /U9/ {
proxy_pass http://10.108.11.149/U9/;

试试
liuxu
2021-12-29 12:16:23 +08:00
@liuxu
第二个打错了,是

location /U9/ {
proxy_pass http://10.108.11.149/;
ddd270700
2021-12-29 12:16:31 +08:00
大致结构:
服务器( windows 安装 nginx )===远端的用友软件(地址是 10.108.11.149 )
ddd270700
2021-12-29 12:18:12 +08:00
@liuxu 我马上去试
twinsdestiny
2021-12-29 12:19:03 +08:00
看 nginx 日志,实际访问的地址是什么
redial39
2021-12-29 12:20:05 +08:00
首先确定远端服务是不是监听在 10.108.11.149 这个 ip 上了...如果监听在 127.0.0.1 上..你怎么调都是 404
ysc3839
2021-12-29 12:23:11 +08:00
@redial39 如果只监听了 localhost ,那外部连接应该会被拒绝,nginx 应该会返回 5xx 错误而不是 404 。
redial39
2021-12-29 12:30:16 +08:00
location /U9 {
proxy_pass http://10.108.11.149/U9;
}
redial39
2021-12-29 12:31:17 +08:00
@redial39 不对
location /U9 {
proxy_pass http://10.108.11.149;
}
ddd270700
2021-12-29 12:31:40 +08:00
@liuxu
两个都尝试了,还是弹出 404 错误。
值得注意的是,这次的 404 是 nginx 报的。而此前的 404 是用友报的(从报错的画面看出来的)
ddd270700
2021-12-29 12:32:44 +08:00
@redial39 我马上去试
redial39
2021-12-29 12:35:18 +08:00
@ddd270700 说到底...你还是需要提供一下 NG 的 URL 转向的后台期望 URL..按照你提供的信息是不够的
redial39
2021-12-29 12:36:36 +08:00
如果代理后端需要 U9 上下文就用 10 楼的,如果后端没有上下文,就用 11 楼的
hymzhek
2021-12-29 12:37:16 +08:00
不要加路径
location /
{
proxy_pass http://10.108.11.149;

}
dier
2021-12-29 12:41:33 +08:00
先确认一下 http://10.108.11.149/U9/ 这个链接能正常访问到吗?/U9/是你加上去用于区分还是本身就有的。
如果本身就有,应该是

location /U9/ {
proxy_pass http://10.108.11.149/U9/;
}

如果是你用来区分,就不能在 proxy 地址后面加 /U9

location /U9/ {
proxy_pass http://10.108.11.149/;
}
Ptu2sha
2021-12-29 12:41:41 +08:00
试试加上 proxy_set_header Host "你的真实服务的域名";
dier
2021-12-29 12:42:58 +08:00
另外,如果 location /U9/不是必需要配置的话,建议用# 16 楼的方式
fantastM
2021-12-29 12:43:11 +08:00
error_log 调到 debug 级别,然后看看日志

http://nginx.org/en/docs/debugging_log.html

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/825058

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX