无法在特定端口上使用 nginx 访问 django 网站,连接超时
can't access to django web site with nginx on specific port, connection timed out
我尝试在django下建立一个演示网站运行,但没有成功。
在 azure 上,我们有 2 个虚拟机可以从 public 地址访问。
该网站必须在 Azure 虚拟机上启动。
两个虚拟机都部署了一个 nginx 服务器,但是当我在另一个端口上的第二个虚拟机上启动一个 nginx 服务器时,它超时了。在我看来,这是一个配置问题。
我使用的配置基于nginx、gunicorn、supervisor、django。
这是 django /site_show/miss_site/miss_site/setting.py 文件:
ALLOWED_HOSTS = ["*"]
STATIC_ROOT = '/site_show/miss_site/static/'
MEDIA_ROOT= os.path.join(BASE_DIR, 'media/')
MEDIA_URL= "/site_show/miss_site/media/"
TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'templates'),)
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',)
SITE_ID = 1
一些 django 文件:
/site_show/miss_site/manage.py
/site_show/miss_site/media and /site_show/miss_site/static/
also /site_show/miss_site/templates/ where the index.html is
nginx 的配置文件
upstream sample_project_server {
server unix:/site_show/miss_site/gunicorn.sock fail_timeout=0;
}
server {
listen 8008;
server_name *public_address*;
client_max_body_size 4G;
access_log /site_show/miss_site/logs/nginx-access.log;
error_log /site_show/miss_site/logs/nginx-error.log warn;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect http;
if (!-f $request_filename) {
proxy_pass http://sample_project_server;
break;
}
}
location /static/ {
autoindex on;
alias /site_show/miss_site/static/;
}
location /media/ {
autoindex on;
alias /site_show/miss_site/media/;
}
启动脚本:
NAME="showcase"
DJANGODIR=/site_show/miss_site
SOCKFILE=/site_show/miss_site/gunicorn.sock
USER=www-data
GROUP=www-data
NUM_WORKERS=3
DJANGO_SETTINGS_MODULE=miss_site.settings
DJANGO_WSGI_MODULE=miss_site.wsgi
echo "Starting $NAME as `whoami`"
# Activate the virtual environment
cd $DJANGODIR
source /site_show/site_env/bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR
themselves (do not use --daemon)
exec gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--bind=unix:$SOCKFILE \
--log-level=debug \
--log-file=-
和supervisor.conf文件:
[program:site_show]
command = /site_show/miss_site/./lauch_script.sh
user = www-data
stdout_logfile = /var/log/site_show/gunicorn_supervisor.log
redirect_stderr = true
environment=LANG=fr_FR.UTF-8,LC_ALL=fr_FR.UTF-8
经过很多小时的尝试,nginx 没有提供正确的文件或没有提供任何东西。感谢您以后的回答。
在 Azure 上打开端口 8008,工作完成。
我尝试在django下建立一个演示网站运行,但没有成功。 在 azure 上,我们有 2 个虚拟机可以从 public 地址访问。 该网站必须在 Azure 虚拟机上启动。 两个虚拟机都部署了一个 nginx 服务器,但是当我在另一个端口上的第二个虚拟机上启动一个 nginx 服务器时,它超时了。在我看来,这是一个配置问题。
我使用的配置基于nginx、gunicorn、supervisor、django。
这是 django /site_show/miss_site/miss_site/setting.py 文件:
ALLOWED_HOSTS = ["*"]
STATIC_ROOT = '/site_show/miss_site/static/'
MEDIA_ROOT= os.path.join(BASE_DIR, 'media/')
MEDIA_URL= "/site_show/miss_site/media/"
TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'templates'),)
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',)
SITE_ID = 1
一些 django 文件:
/site_show/miss_site/manage.py
/site_show/miss_site/media and /site_show/miss_site/static/
also /site_show/miss_site/templates/ where the index.html is
nginx 的配置文件
upstream sample_project_server {
server unix:/site_show/miss_site/gunicorn.sock fail_timeout=0;
}
server {
listen 8008;
server_name *public_address*;
client_max_body_size 4G;
access_log /site_show/miss_site/logs/nginx-access.log;
error_log /site_show/miss_site/logs/nginx-error.log warn;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect http;
if (!-f $request_filename) {
proxy_pass http://sample_project_server;
break;
}
}
location /static/ {
autoindex on;
alias /site_show/miss_site/static/;
}
location /media/ {
autoindex on;
alias /site_show/miss_site/media/;
}
启动脚本:
NAME="showcase"
DJANGODIR=/site_show/miss_site
SOCKFILE=/site_show/miss_site/gunicorn.sock
USER=www-data
GROUP=www-data
NUM_WORKERS=3
DJANGO_SETTINGS_MODULE=miss_site.settings
DJANGO_WSGI_MODULE=miss_site.wsgi
echo "Starting $NAME as `whoami`"
# Activate the virtual environment
cd $DJANGODIR
source /site_show/site_env/bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR
themselves (do not use --daemon)
exec gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--bind=unix:$SOCKFILE \
--log-level=debug \
--log-file=-
和supervisor.conf文件:
[program:site_show]
command = /site_show/miss_site/./lauch_script.sh
user = www-data
stdout_logfile = /var/log/site_show/gunicorn_supervisor.log
redirect_stderr = true
environment=LANG=fr_FR.UTF-8,LC_ALL=fr_FR.UTF-8
经过很多小时的尝试,nginx 没有提供正确的文件或没有提供任何东西。感谢您以后的回答。
在 Azure 上打开端口 8008,工作完成。