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

2021-12-29 12:09:38 +08:00
 ddd270700
5274 次点击
所在节点    NGINX
62 条回复
ddd270700
2021-12-29 12:47:52 +08:00
@redial39
您的方案也尝试了,还是报 404 ( nginx 报的)。
liuxu
2021-12-29 12:48:21 +08:00
你先在你的 nginx 服务器上访问 http://10.108.11.149/U9/,看看能不能访问吧,path 应该是有问题的
darkengine
2021-12-29 12:50:11 +08:00
server_name localhost;

我觉得是这里的问题,你从其他机器访问内网服务器,还能命中这个 server 吗
cpstar
2021-12-29 12:51:18 +08:00
如果是 location /那直接 upstream 三层代理
ddd270700
2021-12-29 12:55:07 +08:00
@hymzhek
@dier
回答:
http://10.108.11.149/U9 是必须的,很奇怪,用友就是装到了目录下,不这样不行。
在装 nginx 的服务器上,这个地址是完全可以正常访问的。
lindas
2021-12-29 12:55:54 +08:00
装个 tcpdump 抓包看一下 nginx 发给 web 服务器的请求就知道怎么回事了
ddd270700
2021-12-29 12:56:05 +08:00
@redial39
刚才太着急,10 楼的方案午饭后去试。
hymzhek
2021-12-29 12:57:50 +08:00
@ddd270700 #25 用我那样的配置 访问 用 http://127.0.0.1/U9 就行了 我本地有用友环境 刚才试了下
ms2008
2021-12-29 13:07:02 +08:00
dongpengfei1
2021-12-29 13:15:04 +08:00
location / {
proxy_pass http://10.108.11.149/U9/;
proxy_set_header Host $host;
proxy_set_header WL-Proxy-SSL true;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Origin "";
}
那这个换上去试试,基本可用覆盖所有场景了
先用 curl 或者 wget http://10.108.11.149/U9/ 看看返回什么,是正常界面还是 404
dongpengfei1
2021-12-29 13:19:25 +08:00
server {
listen 443 ssl http2;
server_name ___;
ssl_certificate ___;
ssl_certificate_key ___;

# Specify SSL config if using a shared one.
#include conf.d/ssl/ssl.conf;

# Allow large attachments
#client_max_body_size 128M;

location / {
proxy_pass http://10.108.11.149/U9/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
client_max_body_size 64M;
proxy_read_timeout 300s;
}
error_log ___;
}
还是给你贴全了吧
gtchan13579
2021-12-29 13:24:24 +08:00
server {
listen 80;
server_name _;

location ^~ /U9 {
proxy_pass http://10.108.11.149/U9/;
proxy_set_header Host $proxy_host;
}
}
}
0o0O0o0O0o
2021-12-29 13:34:56 +08:00
看日志吧,还有虽然多半和这个无关,不过 proxy 还要考虑一下 underscores_in_headers
bfdh
2021-12-29 13:38:59 +08:00
如果对报文没有处理需求的话,何不直接用 tcp 代理?

stream {
upstream http-proxy {
server 10.108.11.149:80;
}

server {
listen 80;
proxy_pass http-proxy;
}
}
ddd270700
2021-12-29 13:53:34 +08:00
首先非常感谢各位大佬百忙中的回答。我刚才试了一下,@hymzhek 的办法是成功访问了用友环境了的。
因此 50 元红包奉上〔后面联系〕。

但是还没有达到我的预期目的,根据大佬的发问,我再重新描述下我的诉求。

我在一个公司的内网中,里面有 OA ,有邮件,有报销,也有一个用友环境,都分部在不同的地址上。所有这些在我的计算机上〔也就是上文中的所谓服务器〕都能访问。
现在我的诉求是在我的计算机上〔也就是上文的服务器〕做一个反代,通过访问我的 ip 地址〔也可以加上端口号〕就能访问以上这些业务。为什么这么做,因为要解决 029 的居家办公问题,说多了眼泪成河。
别的服务,oa ,内部邮件,财务报销都解决了,唯独这个用友环境解决不了。值得注意的是,它的访问地址后面带了一个目录,也就是必须 http://10.108.11.149/U9 。
也就是,要通过访问我的 ip 〔也可以加上端口号〕来访问用友环境〔在 http://10.108.11.149/U9 〕是我的难处和要求。而现在做到了通过访问 127.0.0.1/u9,还不行。我要的是通过访问 127.0.0.1 ,或者 127.0.0.1:8080 之类来访问用友环境。

其他的代码见最上面,我就不贴了。
有偿求助继续有效,感谢大家对 yi 区的帮助。有些啰嗦,希望我说明白了。
jasonyang9
2021-12-29 14:11:42 +08:00
@ddd270700 #35 你这个需求用端口映射也就是 DNAT 应该也可以解决
hymzhek
2021-12-29 14:21:14 +08:00
wangxkww
2021-12-29 14:21:36 +08:00
你第二个需求做下 url rewrite 就可以吧

location /
{
rewrite ^(/.*)$ /U9/$1 break; // 类似这样
proxy_pass http://10.108.11.149;

}
leehaoze
2021-12-29 14:28:30 +08:00
赞同这个 @bfdh 老哥 如果没有额外的处理 直接四层代理转走
webfrogs
2021-12-29 14:33:46 +08:00
试试这个:

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

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

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

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

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

© 2021 V2EX