Score:0

โฮสต์เสมือนอัตโนมัติ - การกำหนดค่า Nginx เดียว

ธง cn

ฉันกำลังพยายามสร้างการกำหนดค่า Nginx เดียวสำหรับหลายโฮสต์ตามไดเร็กทอรี ฉันทำตามคำแนะนำซึ่งดูเหมือนจะทำงานได้ดีกับการตั้งค่า HTTP มาตรฐาน แต่เมื่อฉันเพิ่มการเปลี่ยนเส้นทาง HTTPS 301 ฉันพบข้อผิดพลาด "การเปลี่ยนเส้นทางไม่ถูกต้อง" มีความคิดเกี่ยวกับเรื่องนี้? ด้านล่างนี้คือการกำหนดค่าของฉัน เท็กซัส

เซิร์ฟเวอร์ {
  ฟัง x.x.x.x:80;

  server_name ~^(?<sname>.+?).domain.com$;

  ส่งคืน 301 https://$server_name$request_uri;

}

เซิร์ฟเวอร์ {
    ฟัง x.x.x.x:443 ssl default_server;
    server_name ~^(?<sname>.+?).domain.com$;


รูท /var/web/$sname;

ดัชนี index.html index.htm index.php;


ชุดอักขระ utf-8;

    ที่ตั้ง / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    สถานที่ = /favicon.ico { access_log off; ปิด log_not_found; }
    ตำแหน่ง = /robots.txt { access_log off; ปิด log_not_found; }


ssl_certificate /etc/letsencrypt/live/wildcard.domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wildcard.domain.com/privkey.pem;

access_log /var/log/nginx/$sname-access.log;
error_log /var/log/nginx/wildcard-error.log ดีบัก;

error_page 404 /index.php;

    ปิดการส่งไฟล์;

        ตำแหน่ง ~ \.php {
                รวมถึง fastcgi.conf;
                #fastcgi_index index.php;
                รวม cors_support;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass ยูนิกซ์:/run/php-fpm/php-fpm.sock;
        }
        ตำแหน่ง ~ /\.ht {
                ปฏิเสธทั้งหมด
        }
  ที่ตั้ง /.well-known {
    รูท /var/www/html;
  }
}
djdomi avatar
za flag
ในความคิดส่วนตัวของฉัน มันจะเพียงพอและจัดการง่ายกว่าไหม ถ้าไม่มีการติดตั้งไฟล์เดียว แต่ฉันเขียนหน้าของฉันในแต่ละไฟล์ซึ่งมีเฉพาะโดเมนเดียวกัน และฉันหมายความว่าฉันอ่านแล้วว่าแทบจะเป็นไปไม่ได้เลยที่คุณ กำลังพยายาม แต่ฉันไม่แน่ใจเกี่ยวกับส่วนนี้ แต่อย่าบอกบันทึกใด ๆ
us flag
ผลลัพธ์ของ `curl -v http://test.domain.com` คืออะไร
Score:0
ธง cz

การเปลี่ยนเส้นทางของคุณ "ไม่ถูกต้อง" เนื่องจากคุณกำลังพยายามเปลี่ยนเส้นทางไปที่ https://~^(?<sname>.+?).domain.com$ ซึ่งเห็นได้ชัดว่าไม่ถูกต้อง

ทำไมถึงเป็นเช่นนี้?

คุณเลือกที่จะเขียนการเปลี่ยนเส้นทางของคุณดังนี้:

  ส่งคืน 301 https://$server_name$request_uri;

สิ่งนี้ไม่สมเหตุสมผล เดอะ ชื่อเซิร์ฟเวอร์ ไม่ใช่ชื่อโฮสต์ที่ถูกต้อง

คุณควรเปลี่ยนเส้นทางไปยังโฮสต์เดียวกับที่ตัวแทนผู้ใช้ใช้แทน เดอะ ตัวแปรที่ถูกต้อง ที่จะใช้นั่นคือ $โฮสต์, ไม่ $server_name.

  ส่งคืน 301 https://$host$request_uri;
djdomi avatar
za flag
Michael คุณกำลังสะกดรอยตามฉัน :-) อย่างไรก็ตาม ส่วนเสริม Good Solutin อาจเป็น: https://serverfault.com/questions/706438/what-is-the-difference-between-nginx-variables-host-http- โฮสต์และเซิร์ฟเวอร์-na?noredirect=1&lq=1
Michael Hampton avatar
cz flag
@djdomi นั่นคือลิงค์ในคำตอบ!
djdomi avatar
za flag
ชี้ให้เห็นว่าคุณไม่เห็นว่ามีลิงค์ไปยังเว็บไซต์เดียวกัน ;) และถ้าฉันได้รับ uovote ตรงเวลา ทุกครั้งที่เราพบเราในหัวข้อเดียวกัน ฉันจะเร็วมากถึง 500 คะแนน xD
WallyKaye avatar
cn flag
ขอบคุณวิธีแก้ปัญหา @MichaelHampton ที่ได้ผล $host หมายถึงอะไรในสถานการณ์นี้
Michael Hampton avatar
cz flag
@WallyKaye อธิบายไว้ในโพสต์ที่เชื่อมโยง

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา