Ich habe eine Anwendung auf einer Azure-VM mit einem Nginx-Webserver bereitgestellt. Die Anwendung verwendet Supervisor, um die Nginx- und Gunicorn-Server einzurichten. Ich habe alle Konfigurations- und Protokolldateien überprüft und alles scheint ordnungsgemäß zu funktionieren. Wenn ich jedoch einen Browser auf die Website richte, tritt für www.mydomain.com eine Zeitüberschreitung auf, und für mydomain.com wird Folgendes zurückgegeben:
This site can’t be reached
mydomain.com’s server DNS address could not be found.
Auf Azure habe ich eine DNS-Zone eingerichtet, die Folgendes enthält:
Name: @ TYPE: NS TTL: 120 VALUE: relevant azure name servers.
Name: www TYPE: CAME TTL 60 mydomain.com
Beim Domänenregistrar habe ich die DNS-Namen gemäß den Azure-DNS-Namen festgelegt.
Auf meinem lokalen Rechner habe ich:
Habe den Cache des Browsers geleert. nslookup www.mydomain.com überprüft.
Server: 127.0.1.1
Address: 127.0.1.1#53
Non-authoritative answer:
Name: www.mydomain.com
Address: xxx.xxx.xx.xx
habe Traceroute versucht, xxx.msn.net-Adressen wurden ohne [geschlossen] gefunden, daher nehme ich an, dass der Server gefunden wurde.
versucht:
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
Auf dem Webserver habe ich:
habe Netcat ausprobiert:
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
und netstat:
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
habe die Nginx-Konfiguration überprüft:
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-Fehler- und Zugriffsprotokolle geprüft:
Zugriffsprotokolle sind leer, das Fehlerprotokoll enthält nur:
epoll add event: fd:11 op:1 ev:00000001
Ich habe auch Prozesse und Supervisor, Gunicorn, Redis und Celery überprüft, die alle ordnungsgemäß laufen. Ich verwende nur SQLite, daher muss ich mir keine Gedanken über die Datenbankeinrichtung machen.
Irgendwelche anderen Vorschläge zum Beheben des Grunds, warum ich die Anwendung nicht sehen kann?
Antwort1
NSG fehlte in der Benutzer-VM-Konfiguration.
Eine Netzwerksicherheitsgruppe (NSG) enthält eine Liste mit Zugriffskontrolllisten (ACL)-Regeln, die Netzwerkverkehr zu Ihren VM-Instanzen in einem virtuellen Netzwerk zulassen oder verweigern.
NSGs können entweder Subnetzen oder einzelnen VM-Instanzen innerhalb dieses Subnetzes zugeordnet werden. Wenn eine NSG einem Subnetz zugeordnet ist, gelten die ACL-Regeln für alle VM-Instanzen in diesem Subnetz. Darüber hinaus kann der Datenverkehr zu einer einzelnen VM weiter eingeschränkt werden, indem eine NSG direkt dieser VM zugeordnet wird.
Konfigurieren von NSGs im Azure-Portal:
https://docs.microsoft.com/en-us/azure/virtual-network/virtual-networks-create-nsg-arm-pportal