我想把所有传入的请求重定向到一个URL,而不是一个IP地址,我如何将它归档。当我使用IP地址重定向时,重定向正在发生,但是浏览器地址栏中没有显示重定向的IP/URL。怎么改变这个?
以下是我正在制定的规则,
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发布于 2012-07-26 12:26:22
如果希望在浏览器中显示重定向IP/URL,则需要向浏览器发送HTTP重定向响应(如301)。然后,浏览器将向新位置发送另一个请求。
这不能使用iptable来完成。这需要使用任何HTTP服务器/负载均衡器/代理来完成。
发布于 2019-05-19 15:15:57
我猜您需要将传入的连接重定向到web实例(如Nginx )侦听的某个端口。然后,Nginx必须将它们重定向到您的URL。
# 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:4444Nginx配置:
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)。
https://serverfault.com/questions/411416
复制相似问题