to jest moje pierwsze wdrożenie aplikacji internetowej i napotykam na różnego rodzaju problemy.
Obecnie idę na implementację nginx + gunicorn dla aplikacji Django, ale głównie to pytanie dotyczy konfiguracji nginx. W pewnym kontekście - nginx otrzymuje połączenia i proxy do lokalnego serwera gunicorn.
w konfiguracjach nginx, gdzie jest napisane, server_name
czy muszę je podać? Nie planuję używać żadnych nazw domen, tylko poprzez zewnętrzny adres IP mojej sieci (jest statyczny) i numer portu, którego należy słuchać.
Pragnę, aby kiedy uzyskałem dostęp do czegoś takiego http://xxx.xxx.xxx.xxx:9050
, byłbym w stanie uzyskać stronę.
Poniżej znajduje się przykładowy kod, na którym oprę konfiguracje w celach informacyjnych.
server {
listen 80;
server_name WHAT TO PUT HERE?;
root /path/to/test/hello;
location /media/ {
# if asset versioning is used
if ($query_string) {
expires max;
}
}
location /admin/media/ {
# this changes depending on your python version
root /path/to/test/lib/python2.6/site-packages/django/contrib;
}
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 10;
proxy_pass http://localhost:8000/;
}
# what to serve if upstream is not available or crashes
error_page 500 502 503 504 /media/50x.html;
}
Nazwa serwera _; nie jest symbolem wieloznacznym patrz tutaj:
http://blog.gahooa.com/2013/08/21/nginx-how-to-specify-a-default-server
wystarczy określić dyrektywę default_server dla dostępu tylko ip (patrz http://nginx.org/en/docs/http/request_processing.html )
źródło
server_name _;
jest to niezgodna informacja.Jeśli chcesz, aby aplikacja odpowiadała na porcie 9050 bez określonej nazwy hosta, możesz po prostu pominąć nazwę serwera, nie jest to wymagane, ponieważ Nginx najpierw rozpoznaje pozycję nasłuchiwania, a następnie nazwa_serwera, jeśli jest obecna:
Więcej informacji tutaj: Nginx nazwa_serwera i jak to działa
źródło