0

我有一个面向 Internet 的 ELB,它将我的所有请求转发到端口 8080(Nginx Web 服务器)的 Nginx 服务器。假设这个 Nginx 服务器将所有请求转发到我的 Flask 应用程序,该应用程序从应用程序负载均衡器监听端口 8080。所以这里是流程:面向互联网的 ALB (80) --> NGINX (反向代理)8080 --> 内部 ALB (8080)--> Flask App (8080)。现在的问题是我的重定向不起作用

我尝试在 nginx.conf (/etc/nginx/nginx.conf) 中使用 proxy_pass,如下所示

server {
    listen       8080;
    listen       [::]:8080;
    server_name  _;
    root         /usr/share/nginx/html;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

     location = / {
                proxy_pass http://my-internal-alb.us-west-2.elb.amazonaws.com:8080/login;
                proxy_set_header HOST $host;
                proxy_set_header Referer $http_referer;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_set_header X-Forwarded-Proto $scheme;
         }

    location = /login {
                 proxy_pass http://my-internal-alb.us-west-2.elb.amazonaws.com:8080/login;
                 proxy_set_header HOST $host;
                 proxy_set_header Referer $http_referer;
                 proxy_set_header X-Forwarded-For $remote_addr;
                 proxy_set_header X-Forwarded-Proto $scheme;
         }
     location = /signup {
                         proxy_pass http://my-internal-alb.us-west-2.elb.amazonaws.com:8080/signup;
                         proxy_set_header HOST $host;
                         proxy_set_header Referer $http_referer;
                         proxy_set_header X-Forwarded-For $remote_addr;
                         proxy_set_header X-Forwarded-Proto $scheme;
                 }

还有我的 Flask 应用程序代码

    @studio_api_blueprint.route('/login', methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if request.method == "POST":
        if form.validate_on_submit():
            db_object = users.query.filter_by(username=form.username.data).first()
            if db_object is None or db_object.username != form.username.data or db_object.password != form.password.data:
                flash('Invalid username or password')
                return redirect(url_for('studioAPI.login'))
            login_user(db_object, form.remember_me.data)
            print(current_user.username)
            return redirect(url_for('studioAPI.first'))
    return render_template('login.html', form=form)


@studio_api_blueprint.route('/signup', methods=['GET', 'POST'])
def signup():
    form = RegistrationForm()
    if form.validate_on_submit():
        db_object = users(username=form.username.data, password=form.password.data, fname=form.firstname.data,
                          lname=form.lastname.data)
        db.session.add(db_object)
        db.session.commit()
        db.session.flush()
        flash('Congratulations, you are now a registered user with username {}! Please login below.'.format(
            form.username.data))
        return redirect(url_for('studioAPI.login'))
    return render_template('signup.html', form=form)

现在的问题是当我在注册页面并且用户填写注册数据并提交时 - nginx 似乎没有将我重定向到登录页面,请注意,当我在本地测试时(所有重定向都正常),所以问题是在成功注册后'/signup' 不会重定向到 /login 页面。我不确定我这样做是否正确。任何帮助将不胜感激。谢谢

4

0 回答 0