Iptables
Apache VirtualHost 重定向 302(循環連結)
我尋求一些智慧,所以請幫忙……我有一個虛擬機在 IP:192.168.100.1 上充當路由器/Web 伺服器/dnsmasq 伺服器。我有其他機器作為客戶端。
伺服器有 IPTables 規則將來自埠 80 的任何流量重定向到埠 8081。
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8081
我還使用以下配置在偵聽埠 8081 的伺服器上創建了基於名稱的虛擬主機。
<VirtualHost *:8081> RewriteEngine On RewriteRulle .* http://cpt.haustor.org [R,L] ServerName haustor.org ServerAlias cpt.haustor.org DocumentRoot /var/opt/mypage <Directory /var/opt/mypage> DirectoryIndex index.html Require all granted Options Indexes FollowSymLinks Includes </Director>
域 haustor.org 和子域 cpt.haustor.org 本地託管在伺服器機器上,並存在於 /etc/hosts 文件中:
192.168.100.1 cpt.haustor.org haustor.org
客戶端能夠解析 Web 伺服器的 IP (192.168.100.1): 客戶端發出的探勘:
root@captivo:~# dig cpt.haustor.org ; <<>> DiG 9.9.5-9+deb8u2-Debian <<>> cpt.haustor.org ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41972 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;cpt.haustor.org. IN A ;; ANSWER SECTION: cpt.haustor.org. 0 IN A 192.168.100.1 ;; Query time: 1 msec ;; SERVER: 192.168.100.1#53(192.168.100.1) ;; WHEN: Sun Aug 16 22:28:43 CEST 2015 ;; MSG SIZE rcvd: 60
從這個角度來看,一切似乎都很好,但是當我嘗試從 Konqueror 訪問任何 URL 時,會出現錯誤頁面,指出存在循環連結。老實說,我不知道如何解決這個問題。目前我正在使用 Debian 8、Apache 2.4.10 和 dnsmasq 2.72。
請幫我解決這個問題。
PS 相同的配置在 CentOS 6 上執行沒有問題。
BR,內文
更新:
查看日誌我看到的是該頁面實際上同時被多次呼叫:
root@captivo:~# cat /var/log/apache2/captivo-custom.log 192.168.100.115 - - [16/Aug/2015:22:49:19 +0200] "GET / HTTP/1.1" 302 531 192.168.100.115 - - [16/Aug/2015:22:49:19 +0200] "GET / HTTP/1.1" 302 534 192.168.100.115 - - [16/Aug/2015:22:49:19 +0200] "GET / HTTP/1.1" 302 533 192.168.100.115 - - [16/Aug/2015:22:49:19 +0200] "GET / HTTP/1.1" 302 533 192.168.100.115 - - [16/Aug/2015:22:49:19 +0200] "GET / HTTP/1.1" 302 533 192.168.100.115 - - [16/Aug/2015:22:49:19 +0200] "GET / HTTP/1.1" 302 533 192.168.100.115 - - [16/Aug/2015:22:49:19 +0200] "GET / HTTP/1.1" 302 533 root@captivo:~#
顯然
RewriteRule
匹配任何東西都會導致循環。禁用它。如果您只想將http://haustor.org/>重定向到<http://cpt.haustor.org/>,請`<VirtualHost`為每個虛擬主機聲明。
<VirtualHost *:8081> ServerName haustor.org Redirect / http://cpt.haustor.org/ </VirtualHost> <VirtualHost *:8081> ServerName cpt.haustor.org DocumentRoot /var/opt/mypage <Directory /var/opt/mypage> DirectoryIndex index.html Require all granted Options Indexes FollowSymLinks Includes </Directory> </VirtualHost>