- 我无法使用域名地址,因为
server_name
我无法控制 DNS 服务器。我必须使用公共 IP 来连接到我的 Web 服务器。 - 所以我设置
server_name
为_;
,但是当我请求时http://firewall-public-ip:5000
它会重定向到http://localhost:5000
。 - 我可以正常打开其他不使用重定向的页面。例如,我可以访问
http://firewall-public-ip:5000/login
并登录,但http://localhost:5000/login
登录后它会重定向到,因为登录页面使用重定向。
nginx.conf:
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
proxy_hide_header X-Powered-By;
proxy_hide_header Server;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
server {
listen 5000;
server_name _;
server_name_in_redirect off;
ssl_protocols TLSv1.2;
location '/' {
proxy_pass http://unix:/var/sockets/gunicorn.sock;
}
}
}
我该如何修复这个问题?同样,我无法使用该服务器的域地址。
*编辑添加了应用程序重定向
@blueprint.route('/')
def route_default():
return redirect(url_for('authentication_blueprint.login'))
@blueprint.route('/login', methods=['GET', 'POST'])
def login():
login_form = LoginForm(request.form)
if 'login' in request.form:
# read form data
username = request.form['username']
password = request.form['password']
# Locate user
user = Users.query.filter_by(username=username).first()
# Check the password
if user and verify_pass(password, user.password):
login_user(user)
return redirect(url_for('authentication_blueprint.route_default'))
# Something (user or pass) is not ok
return render_template('accounts/login.html',
msg='Wrong user or password',
form=login_form)
if not current_user.is_authenticated:
return render_template('accounts/login.html',
form=login_form)
return redirect(url_for('home_blueprint.index'))
应用程序.身份验证.__init__.py
from flask import Blueprint
blueprint = Blueprint(
'authentication_blueprint',
__name__,
url_prefix=''
)
答案1
nginx 不会使用此配置发送任何重定向。
重定向来自您的目标应用程序proxy_pass
。该应用程序很可能有一个“基本 URL”设置,您需要在其中输入您的 IP 地址。