Nginx反向代理部署Django网站失败求助:站点无法访问
部署Django站点遇到的Nginx 502错误问题
已完成的配置
- 开发服务器运行正常,访问
xxx.xxx.xxx.xxx:8000可正常打开应用 - Nginx已启动,访问
founderslooking.com能看到默认页面 - 已配置Supervisor和Nginx反向代理,Supervisor状态为运行,但站点无法正常显示
问题现象
- Nginx配置中
server_name设为api.founderslooking.com时无响应,改为founderslooking.com时出现502 Bad Gateway错误 - Nginx错误日志提示找不到
unix:/websapps/founders/founders_3_10_12/run/gunicorn.sock,但实际文件存在,且Gunicorn进程用户拥有该文件权限
相关配置文件
Nginx配置文件(/etc/nginx/sites-available/founders.conf)
upstream founders_app_server { server unix:/websapps/founders/founders_3_10_12/run/gunicorn.sock fail_timeout=0; } server { listen 80; server_name api.founderslooking.com; client_max_body_size 4G; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; if (!-f $request_filename){ proxy_pass http://founders_app_server; } } }
Supervisor配置文件(/etc/supervisor/conf.d/founders.conf)
[program:founders] command = /webapps/founders/founders_3_10_12/bin/gunicorn_start user = userfounders stdout_logfile = /webapps/founders/founders_3_10_12/logs/supervisor.log redirect_stderr = true environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8
日志信息
Supervisor日志
Starting [2023-10-10 09:10:56 +0000] [806] [DEBUG] Current configuration: config: ./gunicorn.conf.py wsgi_app: None bind: ['unix:/webapps/founders/founders_3_10_12/run/gunicorn.sock'] backlog: 2048 workers: 3 worker_class: sync threads: 1 worker_connections: 1000 max_requests: 0 max_requests_jitter: 0 timeout: 30 graceful_timeout: 30 keepalive: 2 limit_request_line: 4094 limit_request_fields: 100 limit_request_field_size: 8190 reload: False reload_engine: auto reload_extra_files: [] spew: False check_config: False print_config: False preload_app: False sendfile: None reuse_port: False chdir: /webapps/founders/founders_3_10_12/backend daemon: False raw_env: [] pidfile: None worker_tmp_dir: None user: 998 group: 999 umask: 0 initgroups: False tmp_upload_dir: None secure_scheme_headers: {'X-FORWARDED-PROTOCOL': 'ssl', 'X-FORWARDED-PROTO': 'https', 'X-FORWARDED-SSL': 'on'} forwarded_allow_ips: ['127.0.0.1'] accesslog: None disable_redirect_access_to_syslog: False access_log_format: %(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s" errorlog: - loglevel: debug capture_output: False logger_class: gunicorn.glogging.Logger logconfig: None logconfig_dict: {} logconfig_json: None syslog_addr: udp://localhost:514 syslog: False syslog_prefix: None syslog_facility: user enable_stdio_inheritance: False statsd_host: None dogstatsd_tags: statsd_prefix: "supervisor.log" 222L, 8705B
Nginx错误日志
2023/10/10 10:14:19 [crit] 689#689: *1 connect() to unix:/websapps/founders/founders_3_10_12/run/gunicorn.sock failed (2: No such file or directory) while connecting to upstream, client: 102.32.168.108, server: founderslooking.com, request: "GET / HTTP/1.1", upstream: "http://unix:/websapps/founders/founders_3_10_12/run/gunicorn.sock:/", host: "founderslooking.com"
文件存在验证
root@OhvcNSDb8D:/var/log/nginx# cd /webapps/founders/founders_3_10_12/run/ root@OhvcNSDb8D:/webapps/founders/founders_3_10_12/run# ls gunicorn.sock root@OhvcNSDb8D:/webapps/founders/founders_3_10_12/run#
解决步骤
修正路径拼写错误
Nginx配置里的sock路径写的是websapps,但实际路径是webapps(少了一个e)。修改Nginx配置文件中的路径为unix:/webapps/founders/founders_3_10_12/run/gunicorn.sock,保存后执行:sudo nginx -t # 检查配置语法是否正确 sudo systemctl restart nginx确保Nginx有权限访问sock文件
# 查看Nginx运行用户,通常为www-data ps aux | grep nginx | grep -v root # 给sock所在目录添加读取权限 sudo chmod 755 /webapps/founders/founders_3_10_12/run/ # 给sock文件添加读写权限 sudo chmod 660 /webapps/founders/founders_3_10_12/run/gunicorn.sock # 将Nginx用户加入Gunicorn进程的用户组(日志中显示组ID为999) sudo usermod -aG 999 www-data重启相关服务
sudo supervisorctl restart founders sudo systemctl restart nginx
内容的提问来源于stack exchange,提问作者crawlingdev
相关产品推荐
相关产品推荐

