ฉันมีปัญหา ฉันมีเซิร์ฟเวอร์ที่ใช้งานจริง 2 เครื่องพร้อม NGINX ที่ใช้งานได้บน 2 โดเมน การผลิตแอป 1.example.com
และ การผลิตแอป 2.example.com
แต่เมื่อฉันเพิ่มลงใน haproxy balancer และใช้เพียงอันแรกหรืออันที่สองอันที่สองก็ใช้งานได้ แต่อันแรกส่งคืนหน้าต้อนรับ nginx
การกำหนดค่า Nginx เหมือนกันทั้งสองอย่าง ต่างกันแค่ใน ชื่อเซิร์ฟเวอร์
. ฉันไม่สามารถเข้าใจได้ว่าปัญหาอยู่ที่ใด
นี่คือการกำหนดค่า haproxy ของฉัน:
ทั่วโลก
แม็กซ์คอน 500000
บันทึก /dev/log local0.log
บันทึก /dev/log local1 ประกาศ
chroot /var/lib/haproxy
ซ็อกเก็ตสถิติ /run/haproxy/admin.sock โหมด 660 ระดับผู้ดูแลระบบ expose-fd ผู้ฟัง
หมดเวลาสถิติ 30 วินาที
ผู้ใช้แฮพร็อกซี
กลุ่ม haproxy
ภูต
# ตำแหน่งวัสดุ SSL เริ่มต้น
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# การเข้ารหัสเริ่มต้นเพื่อใช้กับซ็อกเก็ตการฟังที่เปิดใช้งาน SSL
# สำหรับข้อมูลเพิ่มเติม โปรดดูที่ ciphers(1SSL) รายการนี้มาจาก:
# https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
# สามารถรับรายการทางเลือกพร้อมคำสั่งเพิ่มเติมได้จาก
# https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=haproxy
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
ssl-default-bind-options ไม่มี sslv3
ค่าเริ่มต้น
เข้าสู่ระบบทั่วโลก
โหมด http
ตัวเลือก httplog
ตัวเลือก dontlognull
ตัวเลือกไปข้างหน้าสำหรับ
ตัวเลือก http-ปิดเซิร์ฟเวอร์
หมดเวลาเชื่อมต่อ 10 วินาที
ไคลเอ็นต์หมดเวลา 30 วินาที
เซิร์ฟเวอร์หมดเวลา 120 วินาที
ไฟล์ข้อผิดพลาด 400 /etc/haproxy/errors/400.http
ไฟล์ข้อผิดพลาด 403 /etc/haproxy/errors/403.http
ไฟล์ข้อผิดพลาด 408 /etc/haproxy/errors/408.http
ไฟล์ข้อผิดพลาด 500 /etc/haproxy/errors/500.http
ไฟล์ข้อผิดพลาด 502 /etc/haproxy/errors/502.http
ไฟล์ข้อผิดพลาด 503 /etc/haproxy/errors/503.http
ไฟล์ข้อผิดพลาด 504 /etc/haproxy/errors/504.http
ส่วนหน้า http_front
ผูก *:80
สถิติ uri /haproxy?stats
default_backend http_back
แบ็กเอนด์ http_back
แหล่งสมดุล
คุกกี้ SERVERUSED แทรก nocache ทางอ้อม
โหมด http
http-request set-header X-Client-IP %[src]
ตัวเลือก httpchk HEAD / HTTP/1.0
เซิร์ฟเวอร์ production-app1.example.com production-app1.example.com:80 ตรวจสอบ ตก 2 เพิ่มขึ้น 2
เซิร์ฟเวอร์ production-app2.example.com production-app2.example.com:80 ตรวจสอบ ตก 2 เพิ่มขึ้น 2
นี่คือ nginx conf ใน 1 แอป (ไม่ทำงาน)
เจ้าภาพ:
ต้นน้ำ app_production {
# เส้นทางไปยังไฟล์ Puma SOCK ตามที่กำหนดไว้ก่อนหน้านี้
ยูนิกซ์เซิร์ฟเวอร์:/var/www/production/app/shared/tmp/sockets/puma.sock fail_timeout=0;
}
เซิร์ฟเวอร์ {
server_name การผลิต app1.example.com;
รูท /var/www/production/app/shared/public;
try_files $uri/index.html $uri @app;
ตำแหน่ง @app {
proxy_pass http://app_production;
proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
proxy_set_header โฮสต์ $http_host;
ปิด proxy_redirect;
}
#บันทึก
#
access_log /var/www/log/production/app/access.log;
error_log /var/www/log/production/app/error.log;
error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
#keepalive_timeout 10;
ฟัง 80;
}
และการกำหนดค่า nginx ส่วนกลาง
# การกำหนดค่าเซิร์ฟเวอร์ที่ใช้งานจริง nginx
ผู้ใช้ปรับใช้;
ผู้ปฏิบัติงาน_กระบวนการ 2; # ประสิทธิภาพที่ดีขึ้นด้วยยอด IO
worker_rlimit_nofile 65535;
error_log /var/log/nginx/error.log เตือน;
pid /var/run/nginx.pid;
เหตุการณ์
{
worker_connections 4096;
}
http
{
รวม /etc/nginx/mime.types;
แอปพลิเคชัน default_type/octet-stream;
## การปรับแต่ง HTTP2
http2_max_concurrent_pushes 512;
http2_max_concurrent_streams 512;
http2_chunk_size 16k;
http2_body_preread_size 256k;
connection_pool_size 5600;
#keepalive ต้องสิ่งนี้
proxy_http_version 1.1;
การเชื่อมต่อ proxy_set_header "";
ส่งไฟล์บน;
tcp_nopush บน;
tcp_nodelay บน;
keepalive_timeout 360;
Keepalive_requests 10,000;
types_hash_max_size 2048;
server_names_hash_bucket_size 128;
large_client_header_buffers 8 5600;
# หมดเวลาพร็อกซี
proxy_connect_timeout 120 วินาที;
proxy_send_timeout 300 วินาที;
proxy_read_timeout 300 วินาที;
send_timeout 440 วินาที;
# บัฟเฟอร์และแคช
proxy_cache_path /tmp/nginx-cache keys_zone=nginx-cache:10m loader_threshold=300 loader_files=200 max_size=200m;
proxy_cache nginx-cache;
proxy_buffers 40 16k;
proxy_buffer_size 512k;
proxy_busy_buffers_size 512k;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
# การตั้งค่า SSL (จะถูกเพิ่ม)
log_format main '$remote_addr - $remote_user [$time_local] "$request"'
'$สถานะ $body_bytes_sent "$http_referer"'
'"$http_user_agent" "$http_x_forwarded_for"'
'request_time=$request_time'
'upstream_response_time=$upstream_response_time'
'upstream_connect_time=$upstream_connect_time'
'upstream_header_time=$upstream_header_time';
access_log /var/log/nginx/access.log บัฟเฟอร์หลัก = 2048k flush=120;
รวม /etc/nginx/conf.d/*.conf;
รวม /etc/nginx/sites-enabled/*;
}
อันที่สองมีการกำหนดค่าเหมือนกัน แต่ใช้งานได้อย่างมีเสน่ห์
ขอบคุณที่ช่วยเหลือ.