Domain-Name-System

將所有 TLD 請求轉發到另一台伺服器

  • April 19, 2014

所以,緊急情況已經落在我的腿上,不幸的是我沒有能力處理它。客戶公司的一名 IT 技術人員更改了域的 A 記錄,然後去度假。他是唯一可以進入的人,在他從叢林中重新出現之前,無法將其更改回來。

他應該www.A 記錄指向一個新 IP,指向我們正在託管的伺服器mysite.com- 但是,他將*A 記錄更改為新 IP - 這意味著所有子域現在實際上都已失效(mail., exchange.,secure.等)。最初,*A 記錄指向另一個單獨處理所有子域請求的伺服器。

雖然我無法訪問 DNS 控制項,但我確實可以完全訪問 DigitalOcean 伺服器和控制面板,以了解*A 記錄現在指向的位置。

在 DigitalOcean 伺服器上,我可以通過 DNS 控制面板(儘管一目了然)或通過virtual.conf文件(見下文)正確地將任何請求(即mail.mysite.com)轉發到然後應該正確處理請求的正確IP?

作為參考,伺服器是執行 nginx 的 CentOS 6.5 x64。目前處理傳入請求的伺服器塊如下:

server {
   listen       80;
   server_name  mysite.com www.mysite.com;
   root   /var/www/html/mysite.com/;
   error_page 403 404 500 502 503 504 = /server_error.php;
   index  index.php index.html index.htm;

   location / {
        try_files $uri $uri/ /index.php?$args;
   }

   location ~ \.php$ {
       fastcgi_pass   127.0.0.1:9000;
       fastcgi_index  index.php;
       fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
       include        fastcgi_params;
   }
}

謝謝你的幫助。為 TL 道歉;DR。

對於可能有效的 HTTP,但對於 HTTPS,伺服器可能沒有正確的證書,對於其他協議(例如電子郵件),HTTP 服務將無法完成這項工作。

也許在 tcp 模式下站立 HAProxy,監聽連接進入的埠並代理到“真實”伺服器上的正確埠?這對於某些服務可能不太適用,因為連接的明顯來源將是 HAProxy 框。

更好的方法可能是訪問 DNS。必須有某種機制可以用來訪問該帳戶;客戶公司中沒有其他人與 DNS 提供商建立聯繫嗎?或者您可以重置該人的電子郵件密碼,然後發送密碼重置電子郵件嗎?

編輯

要讓 HAProxy 在這種情況下工作,您需要安裝 HAProxy -如果尚未啟用 EPEL,則需要啟用它。然後yum install haproxy

編輯/etc/haproxy/haproxy.cfg;不確定那裡的預設配置到底是什麼樣的,但是您需要先清除所有listen部分,同時保留globalanddefaults部分。

然後,對於您需要發送到其他伺服器的每個偵聽埠,您將需要這樣的部分(請注意,如果添加埠 80,則需要先停止 nginx 服務):

listen port-443
   bind :443
   mode tcp
   balance roundrobin
   server realserver 192.0.2.1:443

192.0.2.1應該處理連接的伺服器的 IP 在哪裡)。

引用自:https://serverfault.com/questions/590129