Iptables

Apache VirtualHost 重定向 302(循環連結)

  • August 1, 2016

我尋求一些智慧,所以請幫忙……我有一個虛擬機在 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`為每個虛擬主機聲明。

&lt;VirtualHost *:8081&gt;
ServerName haustor.org
Redirect / http://cpt.haustor.org/
&lt;/VirtualHost&gt;

&lt;VirtualHost *:8081&gt;
ServerName cpt.haustor.org
DocumentRoot /var/opt/mypage
&lt;Directory /var/opt/mypage&gt;
   DirectoryIndex index.html
   Require all granted
   Options Indexes FollowSymLinks Includes
&lt;/Directory&gt;
&lt;/VirtualHost&gt;

引用自:https://unix.stackexchange.com/questions/223563