ภาพสถานการณ์โดยสังเขป
- ฉันไม่สามารถใช้ที่อยู่โดเมนสำหรับ
ชื่อเซิร์ฟเวอร์
เพราะฉันไม่สามารถควบคุมเซิร์ฟเวอร์ DNS ได้ ฉันต้องใช้ IP สาธารณะเพื่อเชื่อมต่อกับเว็บเซิร์ฟเวอร์ของฉัน
- ดังนั้นฉันจึงตั้งค่า
ชื่อเซิร์ฟเวอร์
ถึง _;
แต่เมื่อฉันร้องขอ http://firewall-public-ip:5000
มันเปลี่ยนเส้นทางไปที่ http://localhost:5000
.
- ปกติฉันสามารถเปิดหน้าอื่นๆ ที่ไม่ใช้การเปลี่ยนเส้นทางได้ ตัวอย่างเช่นฉันสามารถเข้าถึงได้
http://firewall-public-ip:5000/login
และเข้าสู่ระบบ แต่มันเปลี่ยนเส้นทางไปที่ http://localhost:5000/เข้าสู่ระบบ
เนื่องจากหน้าเข้าสู่ระบบใช้การเปลี่ยนเส้นทางหลังจากเข้าสู่ระบบ
nginx.conf:
# สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่า ดู:
# * เอกสารภาษาอังกฤษอย่างเป็นทางการ: http://nginx.org/en/docs/
# * เอกสารทางการของรัสเซีย: http://nginx.org/ru/docs/
ผู้ใช้ nginx;
worker_processes อัตโนมัติ
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# โหลดโมดูลไดนามิก ดู /usr/share/doc/nginx/README.dynamic
รวม /usr/share/nginx/modules/*.conf;
เหตุการณ์ {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request"'
'$สถานะ $body_bytes_sent "$http_referer"'
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log หลัก;
ส่งไฟล์บน;
tcp_nopush บน;
tcp_nodelay บน;
keepalive_timeout 65;
types_hash_max_size 4096;
proxy_hide_header X-ขับเคลื่อนโดย;
เซิร์ฟเวอร์ proxy_hide_header;
รวม /etc/nginx/mime.types;
แอปพลิเคชัน default_type/octet-stream;
# โหลดไฟล์การกำหนดค่าแบบแยกส่วนจากไดเร็กทอรี /etc/nginx/conf.d
# ดู http://nginx.org/en/docs/ngx_core_module.html#include
# สำหรับข้อมูลเพิ่มเติม.
รวม /etc/nginx/conf.d/*.conf;
เซิร์ฟเวอร์ {
ฟัง 5,000;
ชื่อเซิร์ฟเวอร์ _;
server_name_in_redirect ปิด;
ssl_protocols TLSv1.2;
ที่ตั้ง '/' {
proxy_pass http://unix:/var/sockets/gunicorn.sock;
}
}
}
ฉันจะแก้ไขปัญหานี้ได้อย่างไร อีกครั้ง ฉันไม่สามารถใช้ที่อยู่โดเมนกับเซิร์ฟเวอร์นี้ได้
* แก้ไข เพิ่มการเปลี่ยนเส้นทางแอปพลิเคชัน
@blueprint.route('/')
def route_default():
ส่งคืนการเปลี่ยนเส้นทาง (url_for ('authentication_blueprint.login'))
@blueprint.route('/login', method=['GET', 'POST'])
เข้าสู่ระบบ def ():
login_form = แบบฟอร์มการเข้าสู่ระบบ (request.form)
ถ้า 'เข้าสู่ระบบ' ในแบบฟอร์มคำขอ:
# อ่านข้อมูลแบบฟอร์ม
ชื่อผู้ใช้ = request.form ['ชื่อผู้ใช้']
รหัสผ่าน = request.form ['รหัสผ่าน']
# ค้นหาผู้ใช้
ผู้ใช้ = Users.query.filter_by(ชื่อผู้ใช้=ชื่อผู้ใช้).อันดับแรก()
#ตรวจสอบรหัสผ่าน
ถ้าผู้ใช้และ Verify_pass(รหัสผ่าน, user.password):
login_user (ผู้ใช้)
ส่งคืนการเปลี่ยนเส้นทาง (url_for ('authentication_blueprint.route_default'))
# บางอย่าง (ผู้ใช้หรือผ่าน) ไม่เป็นไร
ส่งคืน render_template('accounts/login.html',
msg='ผู้ใช้หรือรหัสผ่านไม่ถูกต้อง',
แบบฟอร์ม=เข้าสู่ระบบ_แบบฟอร์ม)
หากไม่ใช่ current_user.is_authenticated:
ส่งคืน render_template('accounts/login.html',
แบบฟอร์ม=เข้าสู่ระบบ_แบบฟอร์ม)
ส่งคืนการเปลี่ยนเส้นทาง (url_for ('home_blueprint.index'))
apps.authentication.__init__.py
จากพิมพ์เขียวนำเข้ากระติกน้ำ
พิมพ์เขียว = พิมพ์เขียว (
'การรับรองความถูกต้อง_พิมพ์เขียว',
__ชื่อ__,
url_prefix=''
)