為部署在 Azure VM 上的 Nginx 應用程序調試 DNS 超時
我使用 Nginx Web 伺服器在 Azure VM 上部署了一個應用程序。該應用程序使用 supervisor 來設置 Nginx 和 gunicorn 伺服器。我檢查了所有配置和日誌文件,似乎一切正常。但是,當我將瀏覽器指向該網站時,www.mydomain.com 和 mydomain.com 的瀏覽器將返回:
This site can’t be reached mydomain.com’s server DNS address could not be found.
在 Azure 上,我設置了一個 DNS 區域,其中包含:
Name: @ TYPE: NS TTL: 120 VALUE: relevant azure name servers. Name: www TYPE: CAME TTL 60 mydomain.com
在域註冊商上,我已根據 azure DNS 名稱設置了 DNS 名稱。
在我的本地機器上,我有:
刷新瀏覽器上的記憶體。檢查 nslookup www.mydomain.com
Server: 127.0.1.1 Address: 127.0.1.1#53 Non-authoritative answer: Name: www.mydomain.com Address: xxx.xxx.xx.xx
試過traceroute,xxx.msn.net地址沒有找到
$$ closed $$所以我認為找到了伺服器。 試過:
host -t A www.mydomain.com >>www.mydomian.com is an alias for mydomain.themsazureaddress.com >>mydomain.themsazureaddress.com has address xxx.xxx.xx.xx
在網路伺服器上,我有:
試過netcat:
Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:http *:* LISTEN tcp 0 0 *:ssh *:* LISTEN tcp 0 0 *:https *:* LISTEN tcp 0 0 localhost:8000 *:* LISTEN tcp 0 0 localhost:6379 *:* LISTEN
和網路統計:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 62133/nginx tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 62133/nginx
檢查 nginx 配置:
upstream app_server_wsgiapp { server localhost:8000 fail_timeout=0; } server { listen 80; server_name myapp.com; rewrite ^(.*) https://$server_name$1 permanent; } server { server_name myapp.com; listen 443 ssl;
檢查 nginx 錯誤和訪問日誌:
訪問日誌為空,錯誤日誌僅包含:
epoll add event: fd:11 op:1 ev:00000001
我還檢查了程序,主管、gunicorn、redis、celery 都執行正常。我只是使用 sqlite,所以我不需要擔心數據庫設置。
關於調試為什麼我看不到應用程序的任何其他建議?
使用者虛擬機配置中缺少 NSG。
網路安全組 (NSG) 包含訪問控制列表 (ACL) 規則列表,這些規則允許或拒絕虛擬網路中的 VM 實例的網路流量。
NSG 可以與子網或該子網中的單個 VM 實例相關聯。當 NSG 與子網關聯時,ACL 規則適用於該子網中的所有 VM 實例。此外,通過將 NSG 直接關聯到該 VM,可以進一步限製到單個 VM 的流量。
在 Azure 門戶中配置 NSG:
https://docs.microsoft.com/en-us/azure/virtual-network/virtual-networks-create-nsg-arm-pportal