เป้าหมาย: ฉันต้องการสร้าง reverse proxy อย่างง่ายด้วย nginx ที่สามารถใช้สาธารณสมบัติเป็นอินพุตและเอาต์พุตเว็บไซต์เดียวกันที่เพิ่งได้รับพร็อกซีอย่างสมบูรณ์ คล้ายกับ เว็บไซต์นี้.
ปัญหา: เว็บไซต์ส่วนใหญ่จะส่งคืนข้อผิดพลาด 4xx หรือ 5xx ที่ต้องห้ามหรืออื่นๆ ขณะนี้ฉันสงสัยว่ามีบางอย่างเกี่ยวกับส่วนหัว โดยเฉพาะส่วนหัวของโฮสต์ ฉันสังเกตว่าการลบออกทำให้ 301 ไปที่เว็บไซต์ดั้งเดิม
เส้นทางจนถึงตอนนี้หรือที่รู้จักกันในนามของฉัน
เว็บไซต์.conf
เซิร์ฟเวอร์ {
ฟัง 443 ssl http2;
ฟัง [::]:443 ssl http2;
server_name mydomain.com;
รูท /var/www/mydomain.com/public;
# SSL
ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/mydomain.com/chain.pem;
# ความปลอดภัย
รวม nginxconfig.io/security.conf;
#index.php
ดัชนี index.php;
# ย้อนกลับพร็อกซี
ที่ตั้ง / {
proxy_pass https://somedomain.com:443;
รวม nginxconfig.io/proxy.conf;
}
#การกำหนดค่าเพิ่มเติม
รวม nginxconfig.io/general.conf;
}
security.conf
#ส่วนหัวการรักษาความปลอดภัย
add_header X-XSS-Protection "1; mode=block" เสมอ;
add_header X-Content-Type-Options "nosniff" เสมอ;
add_header Referrer-Policy "no-referrer-when-downgrade" เสมอ;
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'; frame-ancestors 'self';" เสมอ;
add_header สิทธิ์นโยบาย "ดอกเบี้ย cohort = ()" เสมอ;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" เสมอ;
# . ไฟล์
สถานที่ ~ /\.(?!ที่รู้จักกันดี) {
ปฏิเสธทั้งหมด
}
proxy.conf
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
เปิด proxy_ssl_server_name;
# ส่วนหัวพร็อกซี
proxy_set_header อัพเกรด $http_upgrade;
proxy_set_header การเชื่อมต่อ $connection_upgrade;
proxy_set_header โฮสต์ $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header ส่งต่อ $proxy_add_forwarded;
proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
# หมดเวลาพร็อกซี
proxy_connect_timeout 60 วินาที;
proxy_send_timeout 60 วินาที;
proxy_read_timeout 60 วินาที;
และในที่สุดก็ nginx.conf
#favicon.ico
สถานที่ = /favicon.ico {
ปิด log_not_found;
access_log off;
}
#robot.txt
ตำแหน่ง = /robots.txt {
ปิด log_not_found;
access_log off;
}
#สินทรัพย์สื่อ
ตำแหน่ง ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg |midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ {
หมดอายุ 7d;
access_log off;
}
# svg แบบอักษร
ตำแหน่ง ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
add_header Access-Control-Allow-Origin "*";
หมดอายุ 7d;
access_log off;
}
#gzip
เปิด gzip;
gzip_vary บน;
gzip_proxyed ใด ๆ ;
gzip_comp_level 6;
ข้อความ gzip_types/ข้อความล้วน/ข้อความ css/แอปพลิเคชัน xml/แอปพลิเคชัน json/แอปพลิเคชันจาวาสคริปต์/แอปพลิเคชัน rss+xml/atom+xml รูปภาพ/svg+xml;
อย่างที่คุณเห็นการกำหนดค่านั้นสร้างโดย nginxconfig.io และดูเหมือนค่อนข้างถูกต้อง ความคิดใด ๆ เกี่ยวกับสิ่งที่อาจผิด?