如何配置和存取相同網站/網域的本機和遠端版本?

如何配置和存取相同網站/網域的本機和遠端版本?

我正在開發一個客戶的網站,該網站目前託管在外部遠端伺服器上。我將該網站的副本下載到我的本機電腦上,該電腦正在運行 Arch Linux 上設定的“LAMP 堆疊”,以用作開發版本。

該網站是使用 WordPress 建立的,因此該網站的網域儲存在資料庫中,並且每當在網站上產生連結時都會使用該資料庫。因此,為了避免編輯資料庫,我在 Apache 中使用虛擬主機配置了站點,並將伺服器的網域設定為與「即時」站點的網域名稱相同,例如在我的「vhosts.conf」檔案中...

ServerName    live-domain-name.co.uk
ServerAlias   *.live-domain-name.co.uk


我還將網域新增到本機「主機」檔案中,如下所示:

127.0.0.1    live-domain-name.co.uk


我想做的是訪問兩個都從我的瀏覽器訪問站點,至少這樣如果我運行 Apache,我可以獲得該站點的本地副本,但如果 Apache不是運行然後我就得到了該網站的“真實”版本!


我在文件中新增了127.0.0.1第一個「名稱伺服器」條目/etc/resolv.conf,第二個條目是我的網際網路路由器的 IP,第三個條目是 Google 的公共 DNS 伺服器。然而,即使 Apache 未運行,$ ping ...該域的 IP 仍顯示為 127.0.0.1!


我猜我需要某種 DNS 解析器來首先檢查我的本機主機,但如果找不到該網站(即 Apache 未運行),那麼它將回退到使用其他 DNS 伺服器之一! -- 只是我不知道如何安裝和設定 DNS 伺服器/轉發器...

有人可以幫我嗎?

答案1

我認為@piercedRichard建議的方法(即當apache關閉時從/etc/hosts中刪除條目)是可行的...

但我也可以想到一種扭曲的方式(使用 iptables)將 live-domain-name.co.uk 的 IP 位址路由回 localhost。我認為這會更加穩健 - 因為 DNS 解析將被緩存,除了修復 /etc/hosts 之外,您還必須在作業系統層和某些瀏覽器(例如​​ firefox)中刷新 dns“緩存”。對 iptables 的更改應該是即時的...

也許類似(重定向到本地):

iptables -t nat -A OUTPUT -p tcp --dst live-ip --dport 80 -j DNAT --to-destination 127.0.0.1:80

刪除規則(停止重定向):

iptables -t nat -D OUTPUT -p tcp --dst live-ip --dport 80 -j DNAT --to-destination 127.0.0.1:80

至於檢測 apache 是否啟動——要么將 iptables 規則放入 /etc/init.d/apache2 文件中——
要么編寫一個嘗試連接到 localhost:80 的腳本,如果可以,則創建規則,否則刪除規則...

答案2

hosts大多數作業系統在嘗試尋找 DNS 伺服器之前都會從其檔案中進行解析。如果您從 中刪除(或註解掉)該行hosts,它將查詢 DNS 伺服器並發現它是遠端 IP。

您可能還需要更改hostname,如果它設定為相同,也hostname可能用於解析 IP(至少在 Linux 中的某些系統中)。

Hosts.conf 手冊頁- 查看有關該order指令的更多資訊。

相關內容