Nginx无法将Flask应用设为默认IP访问的问题求助
解决Nginx仍显示欢迎页及Flask应用路径配置问题
1. 排查Nginx残留默认配置
删除default文件后,Nginx主配置文件/etc/nginx/nginx.conf可能仍保留默认server块。执行命令打开文件检查:
sudo nano /etc/nginx/nginx.conf
若发现类似以下的默认配置块,直接删除后保存退出:
server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.html index.htm index.nginx-debian.html; server_name _; location / { try_files $uri $uri/ =404; } }
2. 修正自定义Nginx配置文件
应用1(根路径)配置文件 /etc/nginx/sites-available/creative_space
确保配置监听80端口并正确反向代理到Gunicorn的8000端口,同时处理静态文件:
server { listen 80; server_name 192.168.50.192; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location /static { alias /home/myname/creative_space/static; expires 30d; } }
应用2(/annsquared路径)配置文件 /etc/nginx/sites-available/annsquared
需配置路径前缀,同时确保Flask应用支持子路径(若未配置,需修改Flask代码):
server { listen 80; server_name 192.168.50.192; location /annsquared { proxy_pass http://127.0.0.1:8001; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 若Flask未设置子路径,重写请求路径去掉前缀 rewrite ^/annsquared(.*)$ $1 break; } location /annsquared/static { alias /home/myname/annsquared/static; expires 30d; rewrite ^/annsquared/static(.*)$ $1 break; } }
若Flask应用未处理子路径,需在app.py中添加配置:
from flask import Flask # 方式1:设置APPLICATION_ROOT app = Flask(__name__) app.config['APPLICATION_ROOT'] = '/annsquared' # 方式2:初始化时指定url_prefix # app = Flask(__name__, url_prefix='/annsquared')
3. 验证配置并重启Nginx
先检查Nginx配置语法是否正确:
sudo nginx -t
若提示test is successful,重启Nginx服务:
sudo systemctl restart nginx
4. 确认systemd服务状态
检查两个Gunicorn服务是否正常运行:
sudo systemctl status creative_space.service sudo systemctl status annsquared.service
若未启动,执行以下命令启动并设置开机自启:
sudo systemctl start creative_space.service sudo systemctl enable creative_space.service sudo systemctl start annsquared.service sudo systemctl enable annsquared.service
5. 清理Nginx缓存(可选)
若页面未更新,清理缓存后重载Nginx:
sudo rm -rf /var/cache/nginx/* sudo systemctl reload nginx
内容的提问来源于stack exchange,提问作者ArtAsDevice
相关产品推荐
相关产品推荐

