- Não consigo usar o endereço de domínio
server_name
porque não consigo controlar o servidor DNS. Devo usar IP público para me conectar ao meu servidor web. - Então eu configurei
server_name
para_;
, mas quando eu solicitohttp://firewall-public-ip:5000
ele redireciona parahttp://localhost:5000
. - Normalmente, posso abrir outras páginas que não usam redirecionamento. Por exemplo, eu posso acessar
http://firewall-public-ip:5000/login
e fazer login, mas ele redireciona parahttp://localhost:5000/login
porque a página de login usa o redirecionamento após o 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;
}
}
}
Como faço para corrigir isso? Novamente, não posso usar o endereço de domínio para este servidor.
*EDIT adicionou o redirecionamento do aplicativo
@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'))
apps.authentication.__init__.py
from flask import Blueprint
blueprint = Blueprint(
'authentication_blueprint',
__name__,
url_prefix=''
)