Hình ảnh tóm tắt về tình hình
- Tôi không thể sử dụng địa chỉ miền cho
tên máy chủ
bởi vì tôi không thể kiểm soát máy chủ DNS. Tôi phải sử dụng IP công cộng để kết nối với máy chủ web của mình.
- Vì vậy, tôi thiết lập
tên máy chủ
đến _;
, nhưng khi tôi yêu cầu http://firewall-public-ip:5000
nó chuyển hướng đến http://localhost:5000
.
- Tôi thường có thể mở các trang khác không sử dụng chuyển hướng. Ví dụ, tôi có thể truy cập
http://firewall-public-ip:5000/login
và đăng nhập, nhưng sau đó nó chuyển hướng đến http://localhost:5000/đăng nhập
bởi vì trang đăng nhập sử dụng chuyển hướng sau khi đăng nhập.
nginx.conf:
# Để biết thêm thông tin về cấu hình, hãy xem:
# * Tài liệu tiếng Anh chính thức: http://nginx.org/en/docs/
# * Tài liệu chính thức của Nga: http://nginx.org/ru/docs/
người dùng nginx;
worker_processes tự động;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Tải các mô-đun động. Xem /usr/share/doc/nginx/README.dynamic.
bao gồm /usr/share/nginx/modules/*.conf;
sự kiện {
công_nhân kết_nối 1024 ;
}
http {
log_format chính '$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 chính;
gửi tệp trên;
bật tcp_nopus;
bật tcp_nodelay;
keepalive_timeout 65;
loại_hash_max_size 4096;
proxy_hide_header X-Powered-By;
proxy_hide_header Máy chủ;
bao gồm /etc/nginx/mime.types;
ứng dụng default_type/octet-stream;
# Tải các tệp cấu hình mô-đun từ thư mục /etc/nginx/conf.d.
# Xem http://nginx.org/en/docs/ngx_core_module.html#include
# để biết thêm thông tin.
bao gồm /etc/nginx/conf.d/*.conf;
người phục vụ {
nghe 5000;
tên máy chủ _;
server_name_in_redirect tắt;
ssl_protocols TLSv1.2;
địa điểm '/' {
proxy_pass http://unix:/var/sockets/gunicorn.sock;
}
}
}
Làm thế nào để tôi khắc phục điều này? Một lần nữa, tôi không thể sử dụng địa chỉ miền cho máy chủ này.
* CHỈNH SỬA đã thêm chuyển hướng ứng dụng
@blueprint.route('/')
định tuyến_default():
chuyển hướng trở lại (url_for('authentication_blueprint.login'))
@blueprint.route('/login', methods=['GET', 'POST'])
đăng nhập chắc chắn():
login_form = LoginForm(request.form)
nếu 'đăng nhập' trong request.form:
# đọc dữ liệu biểu mẫu
tên người dùng = request.form['tên người dùng']
mật khẩu = request.form['password']
# Định vị người dùng
người dùng = Users.query.filter_by(tên người dùng=tên người dùng).first()
# Kiểm tra mật khẩu
nếu người dùng và verify_pass(mật khẩu, người dùng. mật khẩu):
login_user(người dùng)
chuyển hướng trở lại (url_for('authentication_blueprint.route_default'))
# Có gì đó (người dùng hoặc mật khẩu) không ổn
trả về render_template('accounts/login.html',
msg='Sai người dùng hoặc mật khẩu',
biểu mẫu=login_form)
nếu không phải là current_user.is_authenticated:
trả về render_template('accounts/login.html',
biểu mẫu=login_form)
chuyển hướng trở lại (url_for('home_blueprint.index'))
apps.authentication.__init__.py
từ bản thiết kế nhập bình
kế hoạch chi tiết = Bản thiết kế(
'authentication_blueprint',
__Tên__,
url_prefix=''
)