情况:二级域名(假设是 a.v2ex.com )已经在运营商控制台解析到了服务器 ip 地址(假设是 119.75.217.109),默认 80 端口。
服务器上,iis 跑了一堆网站,80 端口被 iis 用了。
nginx 跑了一堆网站,主要跑 18000 这个端口。
我想让 a.v2ex.com 这个二级域名指向 119.75.217.109:18000 ,应该如何操作?
1
deplivesb 2022-08-15 11:25:32 +08:00
「二级域名(假设是 a.v2ex.com )已经在运营商控制台解析到了服务器 ip 地址(假设是 119.75.217.109),默认 80 端口」
A 记录啥时候能带端口了,80 不是 http 默认端口么,你要想通过 a.v2ex.com 这个域名直接访问到 18000 端口最简单就是 a.v2ex.com:18000 ,如果你不想手动指定端口,用 http 默认 80 ,那就去搜一下 nginx 端口转发 |
2
chenluo0429 2022-08-15 11:25:36 +08:00 via Android 1
解析并不能指定端口,80 是 http 协议的默认端口,用户侧不输入端口的情况下,只能从 80 端口访问。
你的需求只能把 nginx 监听端口改成 80 ,或者用反向代理来将外来流量指向 18000 |
3
unt OP @chenluo0429 #2 nginx 监听不了 80 ,被用了
|
4
VensonEEE 2022-08-15 11:37:33 +08:00
2L 正解
|
5
lostberryzz 2022-08-15 11:42:47 +08:00
可以 iis 里设置反代 nginx 的一堆网站,或者你有多个 ip 的话,nginx bind 到不同的 ip 上,然后 dns 做改动也可以
|
6
unt OP @deplivesb #1 域名后面肯定不能带端口去操作,现实中暴露给用户的肯定是只有一个域名。我这是 nginx 端口转发吗,nginx 监听不了 80 呀,怎么转发
|
7
unt OP @lostberryzz #5 我本来想的是,iis 估计也有转发的功能,然后找了一下,看到了“HTTP 重定向”这个功能,发现不管用,我对 iis 不太熟,还不太清楚怎么搞
|
8
c332030 2022-08-15 11:57:00 +08:00
@unt #3 iis 换下端口,nginx 用 server_name 不行吗,比如 b.v2ex.com 到 iis ,a.v2ex.com 正常 nginx 访问,b.v2ex.com 和 a.v2ex.com 都指向 119.75.217.109
|
9
JustSong 2022-08-15 12:00:01 +08:00 via Android
那就用 443 ,上 https ,一样不用端口
|
10
Huelse 2022-08-15 12:56:49 +08:00
iis 改其他端口,外部流量根据 nginx 配置的域名规则转发
|
11
ruixue 2022-08-15 13:02:01 +08:00 1
域名解析不能指定端口,你这种情况最常规的解决方案就是在 iis 上设置反向代理到 nginx 的 18000 端口
现在很多 docker 应用也都是默认跑在本地某个端口上,然后再统一通过 nginx 反代开放至 internet 的 |
12
Xusually 2022-08-15 13:04:00 +08:00 via iPhone
iis 不是也有反向代理吗?你都说了 iis80 跑了一堆网站了,也不在乎再跑个 b 网站啊,iis 配置监听 b 域名,iis 上配置 b 反向代理到 18000 端口的 nginx 不就可以了?
|
13
LinePro 2022-08-15 13:08:46 +08:00
Google 搜索:IIS reverse proxy
|
14
selca 2022-08-15 13:13:32 +08:00
很好奇,有种解析记录叫 srv 记录,这个我记得好像可以指定端口,但没看明白是什么,有大佬讲讲吗
|
15
jiulang 2022-08-15 13:19:00 +08:00 1
IIS 的反向代理太难用了,IIS 其实是 http.sys 的前端而已,使用 yarp 托管在 http.sys ,继续监听 80 和 443 ,同时从 IIS 手里抢过 a.v2ex.com ,就可以灵活的配置反向代理了,而且性能也最佳。
|
16
jiulang 2022-08-15 13:24:02 +08:00
如果有需要,我可以帮你写这个与 IIS 共享端口(但分摊域名)的反向代理服务,这个服务可以灵活的配置反向代理到的任意上游服务
|
17
jiulang 2022-08-15 13:27:42 +08:00
当然,你也可以在 IIS 和你的新服务(非 IIS)之外,购买一台具有独立 IP 的服务器,上面跑一层 nginx (网关),把域名解析到新服务器的 IP ,然后在 nginx (网关)根据域名做反向代理规则
|
18
devehx 2022-08-15 13:30:25 +08:00
你看看你解析域名的时候不要用 A 记录,使用显性 URL 和隐性 URL 可以直接解析到一个 url 地址,可以带端口的。我之前这样搞过
|
20
nitmali 2022-08-15 13:35:59 +08:00
找其他服务器反向代理中转一下
|
21
unt OP @Xusually #12 我就是这么想的,但是 iis 不知道怎么操作,用了“http 重定向”,但是它是显式转发,url 地址栏地址会变
|
22
jiulang 2022-08-15 13:39:46 +08:00
这个场景我遇到过,某个有历史的 web 服务,用了 a,b,c,d 等多个二级域名完成各个业务模块,后面重写了 d 模块,并使用多台服务器来部署 d 模块。使用 yarp 托管在 http.sys ,可以只动 d 模块。
|
23
6IbA2bj5ip3tK49j 2022-08-15 13:40:13 +08:00
上面已经有人说了,“iis 反代” 就好了。
|
25
unt OP |
27
jiulang 2022-08-15 13:51:13 +08:00
建议还是搞基于 http.sys 的 yarp ,劫持部分域名,且反向代理与负载均衡同时支持
|
28
andyskaura 2022-08-15 13:54:00 +08:00
@selca srv 貌似不能用作 http 访问
|
29
yufeng0681 2022-08-15 13:58:53 +08:00
方案 1 、弄一台 linux 机器安装 nginx 来跑 ip:119.75.217.109 的反向代理,可以基于域名指向后台各种服务,性能不差。
方案 2 、重新弄一个公网 ip ,linux 机器,跑新业务,新业务不太可能用 iis 等性能差的 web 服务器去跑,解耦了,也不会被老业务性能限制,也不会被已有业务的运营吐槽,给他们增加了运维压力,出了事情也不用背锅。 [未来更多的新业务都可以放在这里跑] |
30
honhon 2022-08-15 13:59:35 +08:00
iis 也是支持反向代理的,ARRv3.0
|
31
honhon 2022-08-15 14:00:38 +08:00
重定向浏览器的 ip 地址当然会变
|
32
liaohongxing 2022-08-15 14:03:49 +08:00
windows 装 nginx 没啥用。半残废 。iis 反代即可
|
33
apois 2022-08-15 14:20:41 +08:00
我这边前面有台同 iis 80 443 和 nginx 8080 ,采用的方案是套 CDN ,源站地址可不同端口。
|
34
Xusually 2022-08-15 15:05:54 +08:00 via iPhone
我 google 了一下 iis reverse proxy 第一页全是有效结果,有官方文档,也有博客文章……你随意参考一下就行了啊
|
35
dorothyREN 2022-08-15 17:14:21 +08:00
你需要的可能是 隐性 url
|