我有一个面向 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 页面。我不确定我这样做是否正确。任何帮助将不胜感激。谢谢