首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用iptable重定向到URL?

如何使用iptable重定向到URL?
EN

Server Fault用户
提问于 2012-07-26 12:23:40
回答 2查看 20.7K关注 0票数 -3

我想把所有传入的请求重定向到一个URL,而不是一个IP地址,我如何将它归档。当我使用IP地址重定向时,重定向正在发生,但是浏览器地址栏中没有显示重定向的IP/URL。怎么改变这个?

以下是我正在制定的规则,

代码语言:javascript
复制
echo "1" > /proc/sys/net/ipv4/ip_forward
ebtables -t nat -N GUEST
ebtables -t nat -A PREROUTING -i eth0 -j GUEST
ebtables -t nat -N GUEST-REDIRECT
ebtables -t nat -A GUEST-REDIRECT -j mark --mark-set 1 --mark-target CONTINUE
ebtables -t nat -A GUEST-REDIRECT -j redirect
ebtables -t nat -A GUEST -p 0x800 --pkttype-type otherhost --ip-proto 6 --ip-dport 80 -j GUEST-REDIRECT
iptables -t nat -A PREROUTING -p tcp -m mark --mark 1 -j DNAT --to-destination 172.40.1.0
iptables -t nat -A POSTROUTING -j MASQUERADE
  1. 客户端被重定向到IP 172.40.1.0。但是我想要的是将请求重定向到一个URL例子: www.facebook.com/user。
  2. 当我使用上述规则时,客户机被重定向到IP 172.40.1.0,但是在浏览器的地址栏中,它仍然显示请求的URL,而不是重定向的URL。
EN

回答 2

Server Fault用户

发布于 2012-07-26 12:26:22

如果希望在浏览器中显示重定向IP/URL,则需要向浏览器发送HTTP重定向响应(如301)。然后,浏览器将向新位置发送另一个请求。

这不能使用iptable来完成。这需要使用任何HTTP服务器/负载均衡器/代理来完成。

票数 3
EN

Server Fault用户

发布于 2019-05-19 15:15:57

我猜您需要将传入的连接重定向到web实例(如Nginx )侦听的某个端口。然后,Nginx必须将它们重定向到您的URL。

代码语言:javascript
复制
# Redirect inbound TCP connections, destined to port 80, to port 4444
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:4444

Nginx配置:

代码语言:javascript
复制
server {
  listen 127.0.0.1:4444;

  return 301 "http://example.com/notice/";
}

我可以想象您为什么要这样做,而不是直接让Nginx侦听端口80,因为这个解决方案有助于使Nginx实例热插拔,也就是说,您可以创建另一个Nginx实例(例如/usr/local/nginx/bin/nginx)并在端口80上侦听,而无需实际修改现有的Nginx实例的配置(更具体地说是/etc/nginx/sites-enabled/*),以替换现有的Nginx实例(比如/usr/sbin/nginx)。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/411416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档