Puncte:0

Nginx redirecționează către http://localhost

drapel cz

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=''
)
Puncte:1
drapel us

nginx nu trimite nicio redirecționare cu această configurație.

Redirecționarea vine de la aplicația dvs., care este proxy_pass ţintă. Aplicația are cel mai probabil o setare „URL de bază”, unde trebuie să vă puneți adresa IP.

Lunartist avatar
drapel cz
Motivul pentru care am întrebat nginx.conf a fost din acest motiv: https://serverfault.com/questions/186896/nginx-redirecting-to-localhost
Lunartist avatar
drapel cz
Am editat întrebarea pentru a include redirecționarea aplicației. Crezi că ar trebui să redeschid întrebarea cu eticheta Flask?
Lunartist avatar
drapel cz
FYI: Serverul se deschide normal dacă nu folosesc Nginx și folosesc doar `gunicorn --bind 0.0.0.0:5000 --user bpimanager run:app`.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.