


使用Apache的rewrite功能實(shí)現(xiàn)內(nèi)部重定向
場(chǎng)景:實(shí)驗(yàn)室有一臺(tái)機(jī)器(稱為nat_server吧)擁有外網(wǎng)地址,在另外一臺(tái)內(nèi)部服務(wù)器上提供web服務(wù)(稱之為web_server),我們想讓外網(wǎng)的用戶能夠通過(guò)nat_server能夠訪問(wèn)web_server。
實(shí)現(xiàn)方案
使用iptables的snat,dnat功能
使用ipfilter的map功能
使用apache的rewrite功能
優(yōu)缺點(diǎn):
方法1和2的是通過(guò)端口轉(zhuǎn)發(fā)的功能來(lái)實(shí)現(xiàn)的,對(duì)用戶端有要求,比如說(shuō)我需要通過(guò)http://nat_server:8080的方式來(lái)訪問(wèn)web_server,而且有可能受上級(jí)路由器打開(kāi)端口的限制,如果上級(jí)路由器不允許使用8080端口的話,那就必須換另外一個(gè)端口了。我配置了半天沒(méi)有弄成功,郁悶的是,還不知道是什么原因。
方法3是我推薦的,因?yàn)槲覀冊(cè)揪驮趎at_server上開(kāi)了httpd服務(wù),使用這種方式我可以通過(guò)http://nat_server/to_web_s...的方式來(lái)訪問(wèn)內(nèi)網(wǎng)服務(wù)器
實(shí)現(xiàn)細(xì)節(jié)
這里給出我對(duì)兩種方案的配置,我使用了iptables來(lái)實(shí)現(xiàn)端口重發(fā),加入的規(guī)則如下
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A FORWARD -p tcp --destination-port 80 --destination 10.20.10.204 -j ACCEPT
iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.20.10.204:80
iptables -t nat -A POSTROUTING -s 10.20.10.0/8 -d 10.20.10.204 -p tcp -m tcp --dport 80 -j SNAT --to-source 10.20.10.208
不知道什么原因,我的這個(gè)配置沒(méi)有成功,以后再解決它。
對(duì)于apche的重寫(xiě)規(guī)則,其實(shí)也是比較容易的,需要修改如下地方:
在這里我們假定
DocumentRoot "/var/www/html"
ServerRoot "/etc/httpd"
1) /etc/httpd/conf/httpd.conf 文件
# 加載 rewrite 模塊
LoadModule rewrite_module modules/mod_rewrite.so
# 允許符號(hào)連接和覆蓋,否則rewrite不起作用
Options FollowSymLinks
AllowOverride All
# 允許符號(hào)連接和覆蓋,否則rewrite不起作用
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
2) 在 /var/www/html 下新建 .htaccess 文件,內(nèi)容如下
RewriteEngine on
RewriteBase /
RewriteRule ^forum$ forum/ [L]
3) 在 /var/www/html 下創(chuàng)建 forum 文件加,在forum文件夾中創(chuàng)建 .htaccess 文件,內(nèi)容如下
RewriteEngine on
RewriteBase /forum/
RewriteRule (.*)http://web_server_ip/$1[P,L]
需要注意的是,在上面的RewriteRule當(dāng)中一定要寫(xiě)上 [P] 標(biāo)示,表示是內(nèi)部重定向, [R]表示是外部重定向。 我就是因?yàn)闆](méi)有寫(xiě)上P標(biāo)識(shí),耽誤了好長(zhǎng)時(shí)間。
然后重啟httpd服務(wù)!
關(guān)鍵字:Apache rewrite 內(nèi)部 重定向
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無(wú)AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解