1
lqs 2013-01-15 22:17:21 +08:00
listen 1234,然后 rewrite .* http://test/
|
2
plprapper 2013-01-15 22:22:52 +08:00
反向代理的功能 就是这样的吧
listen 1234 location / { proxy_pass http://127.0.0.1/; 搜搜这个东西 应该是你需要的 |
5
dhq314 OP |
6
goxofy 2013-01-15 23:26:06 +08:00 via iPhone
这个和强制SSL是一样的啊,Google下nginx强制SSL,把80强制转到443
|
7
dhq314 OP @goxofy
不一样,SSL的443端口还是nginx在监听,我这里的1234端口是别的服务程序在监听着...我发现nginx应该是做不了这个端口跳转了? |
8
xiaop 2013-01-16 03:20:35 +08:00 via Android
谁污染谁治理,谁监听谁跳转
|
13
BOYPT 2013-01-16 22:51:06 +08:00
。。不监听又想能跳转,真是奇葩,要么该你原来监听1234的那个程序的代码实现跳转,要么在更层网络,比如iptables把数据包转到用户态,判断需要跳转直接返回掉。反正你不让nginx监听的话没他什么事情。
|
14
wwqgtxx 2013-01-16 23:05:05 +08:00 via Android 1
listen 80
location / { proxy_pass http://127.0.0.1:1234/; nginx只能这样配置了,剩下的配置iptables吧 |
15
xiaop 2013-01-18 22:53:55 +08:00 via Android
楼主的需求,是不是开了1234端口又不想让别人访问到?
|
17
phuslu 2013-01-19 16:12:37 +08:00 via iPhone
楼主你这需求太奇葩+1
太固执了。。。 |
18
dhq314 OP 看到有信息提示,我还以为是有什么好的想法...
其实这个问题我已经不纠结,能实现就最好,不能实现我也知道是什么问题了,至于固不固执由人去说。 回复能关注在问题上就最好,回复些感叹的也可以,虽然这个问题是不需要这些。 不过,有好的想法是欢迎回复的。 |
19
xingis 2013-01-19 18:31:17 +08:00
你是这样的意思吗,你是想让人家直接打开http://test/的时候,访问你服务器的1234端口!是这样吗!
|
20
keakon 2013-01-19 22:05:35 +08:00
确认下需求。
访问1234端口时,如果是HTTP请求,就让浏览器重定向到80端口;否则让监听1234端口的nodejs进程来处理。 处理办法: 1. 让这个nodejs进程自己判断请求。 2. 让nodejs监听127.0.0.1:1234,自己写个服务x监听外部ip:1234,设置允许socket重用端口,然后交给x判断。 |
21
dallaslu 2013-01-27 02:11:31 +08:00
让nodejs监听127.0.0.1:1234
Nginx: server{ listen 外部ip:1234; rewrite ^(.*) http://域名或IP$1 permanent; } server{ listen 80; location / { proxy_pass http://127.0.0.1:1234/; } } |
22
eric_zyh 2013-01-27 15:54:34 +08:00 via iPhone
nodejs开1234端口'nginx80端口
验证是合法html请求就反向代理nginx 不合法就其他处理 |
23
BigZ 2013-01-27 20:18:14 +08:00
楼主,你是指 浏览器的地址跳转,还是指内容的跳转
|
24
linchanx 2013-01-28 15:17:42 +08:00
这个需要路由器来做,把外网地址的80端口和内网地址的1234做静态映射就可以了,当然如果你没法控制到路由器就不知道了。。
|
25
linchanx 2013-01-28 15:32:16 +08:00
@dhq314 具体到如果你是用cisco的设备
ip nat inside source static tcp 内网地址 1234 外网地址 80 这样在外网访问80端口时,路由器就转发到内网服务器的1234端口 |
26
fanwei 2013-01-28 15:55:32 +08:00
楼主是这个意思吧!
nodejs服务开了多个进程,监听了8001,8002,8003。。。。。。 然后,nginx监听的80端口,负载到了8001,8002,8003上面 现在只希望别人访问80端口有回应。如果别人访问8001,8002端口就跳转到80端口 如果是这样,那就很简单了,只需要给nodejs监听的端口绑定个地址的 只监听来至127.0.0.1的访问 然后nginx,负载到127.0.0.1相应的端口 |
27
isy 2013-01-28 16:03:45 +08:00
大家都把时间花在理解问题上面去了。。。楼主把问题描述清楚点多好。
|
28
dhq314 OP @xingis 不是,刚好反过来
@keakon 嗯,在nodejs进程里判断可以,不过不知道会不会有些复杂的url里也包含关键字1234,判断就写得麻烦了,方法是可行,不过现在我不纠结端口问题就不折腾了 @dallaslu nginx绑定1234端口,我的nodejs服务就启动不来了 @fanwei @eric_zyh 现在就是这样做的,nginx已经配置了反向代理 @BigZ 地址跳转 @linchanx 没控制路由的权限 @isy 简单点说就是地址url跳转,url有“1234”字眼的就调到没“1234”字眼的url去,例如在浏览器地址栏上输入 http://test:1234/ ,按回车后浏览器上的地址栏会变成这样 http://test/ |
29
dallaslu 2013-01-30 16:00:37 +08:00
@dhq314 不。因为 IP 不同,可以监听1234。这样,只有对外提供 http://test:1234/ 的外网 IP 的 1234 端口归 nginx 管理。而你的 node.js 服务可以走其他 IP 的 1234 端口。
|
30
dhq314 OP @dallaslu
我的服务架是在linodes上,官方就分配了一个服务器IP给我,上面说的“外部IP”替换成我的服务器IP,再启动nigxi就报了“nginx: [emerg] bind() to 服务器IP:1234 failed (99: Cannot assign requested address)”的错,我知道这是我的服务监听了“1234”这个端口,所以nginx启动会报这个错。 这里说的“外部IP”我有点模糊,是指我的服务器IP?不过我能知道的IP就这一个,如果指其他网关服务器之类的IP,这里我是不清楚了。 |
32
dallaslu 2013-01-31 18:04:53 +08:00
@dhq314 Linode 会给你分配一个外网 IP,还会分配给你内网 IP。
以日本节点为例,106.187.xx.xx 就是我说的外部 IP。而你应该用 nginx 监听外部 IP 的 1234 端口,用 node.js 的相关服务监听 127.0.0.1 的 1234 端口,或 192.168.xx.xx (分配的内部IP)的 1234 端口。 |
33
xiaop 2013-01-31 18:10:31 +08:00
@dallaslu 的思路确实不错,node.js监听内网IP:1234,nginx 监听外网ip:1234
node.js的服务如果外网需要调用,只能用nginx反向代理来实现了。 |
34
xiaop 2013-01-31 18:42:41 +08:00
|
35
loveminds 2013-02-01 05:15:16 +08:00
我想你的意思不过是设置一个到1234端口的反向代理吧
|