Scurtă imagine a situației
- Nu pot folosi adresa de domeniu pentru
numele serverului
pentru că nu pot controla serverul DNS. Trebuie să folosesc IP-ul public pentru a mă conecta la serverul meu web.
- Așa că am stabilit
numele serverului
la _;
, dar când cer http://firewall-public-ip:5000
redirecționează către http://localhost:5000
.
- În mod normal, pot deschide alte pagini care nu folosesc redirecționare. De exemplu, pot accesa
http://firewall-public-ip:5000/login
și autentificare, dar apoi redirecționează către http://localhost:5000/login
deoarece pagina de conectare folosește redirecționarea după conectare.
nginx.conf:
# Pentru mai multe informații despre configurare, consultați:
# * Documentație oficială în limba engleză: http://nginx.org/en/docs/
# * Documentație oficială rusă: http://nginx.org/ru/docs/
utilizator nginx;
worker_proceses auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Încărcați module dinamice. Consultați /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
evenimente {
conexiuni_muncitor 1024;
}
http {
log_format principal „$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 principal;
sendfile activat;
tcp_nopush activat;
tcp_nodelay activat;
keepalive_timeout 65;
types_hash_max_size 4096;
proxy_hide_header X-Powered-By;
server proxy_hide_header;
includ /etc/nginx/mime.types;
aplicație de tip_default/octet-stream;
# Încărcați fișierele de configurare modulare din directorul /etc/nginx/conf.d.
# Consultați http://nginx.org/en/docs/ngx_core_module.html#include
# pentru mai multe informatii.
includ /etc/nginx/conf.d/*.conf;
Server {
asculta 5000;
numele serverului _;
server_name_in_redirect off;
ssl_protocols TLSv1.2;
Locație '/' {
proxy_pass http://unix:/var/sockets/gunicorn.sock;
}
}
}
Cum repar asta? Din nou, nu pot folosi adresa de domeniu pentru acest server.
*EDIT a adăugat redirecționarea aplicației
@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)
dacă „login” în request.form:
# citiți datele formularului
username = request.form['nume utilizator']
parola = request.form['parola']
# Localizați utilizatorul
user = Users.query.filter_by(username=username).first()
# Verificați parola
if user și verify_pass(parolă, utilizator.parolă):
login_user(utilizator)
return redirect(url_for('authentication_blueprint.route_default'))
# Ceva (utilizator sau permis) nu este ok
return render_template('accounts/login.html',
msg='Utilizator sau parolă greșită',
form=login_form)
dacă nu actual_user.is_authenticated:
return render_template('accounts/login.html',
form=login_form)
returnare redirecționare(url_for('home_blueprint.index'))
apps.authentication.__init__.py
de la importul balonului Blueprint
plan = plan(
„authentication_blueprint”,
__Nume__,
url_prefix=''
)