ini adalah penerapan aplikasi web pertama saya dan saya menghadapi semua jenis masalah.
Saya saat ini pergi untuk implementasi nginx + gunicorn untuk aplikasi Django, tetapi sebagian besar pertanyaan ini berkaitan dengan konfigurasi nginx. Untuk beberapa konteks - nginx akan menerima koneksi dan proxy ke server lokal gunicorn.
dalam konfigurasi nginx, di mana dikatakan server_name
apakah saya harus menyediakannya? Saya tidak berencana menggunakan nama domain apa pun, hanya melalui ip eksternal jaringan saya (ini statis) dan nomor port untuk didengarkan.
Keinginan saya adalah ketika saya mengakses sesuatu seperti http://xxx.xxx.xxx.xxx:9050
saya bisa mendapatkan situs tersebut.
Berikut ini adalah contoh kode tempat saya akan mendasari konfigurasi untuk referensi.
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;
}
nama server _; bukan wildcard lihat di sini:
http://blog.gahooa.com/2013/08/21/nginx-how-to-specify-a-default-server
cukup tentukan arahan default_server untuk akses hanya-ip (lihat http://nginx.org/en/docs/http/request_processing.html )
sumber
server_name _;
adalah tidak cocok.Jika Anda ingin aplikasi Anda merespons pada port 9050 tanpa hostname tertentu maka Anda dapat melewati server_name, itu tidak diperlukan karena Nginx pertama-tama menyelesaikan entri mendengarkan dan kemudian server_name jika ada:
Lebih detail di sini: Nginx server_name dan cara kerjanya
sumber