การอนุญาตให้โฮสต์ Wordpress บนโฟลเดอร์ย่อยภายในไซต์ที่มีอยู่แล้ว

เราได้รับคำขอจากลูกค้าที่ต้องการโฮสต์เว็บไซต์ WordPress ภายในเว็บไซต์ของเรา ภายในนั้น ฉันหมายความว่าไซต์ไม่สามารถอยู่ในโดเมนย่อยได้ เช่น https://blog.example.com แต่จะต้องอยู่ในเส้นทาง/โฟลเดอร์ย่อยของตัวเองแทน เช่น https://www.example.com/blog< /ก>. นี่เป็นเพราะการจัดอันดับหน้า (เห็นได้ชัดว่าการจัดอันดับหน้าจะถูกลงโทษหากใส่ไว้ในโดเมนย่อย)

ปัญหาคือ เว็บไซต์ของเราไม่ทำงานใน PHP (เขียนด้วยภาษา Scala ที่ทำงานบน Jetty) นอกจากนี้ ไซต์หลักของเรายังเรียกใช้จากคอนเทนเนอร์ Docker ที่สนับสนุนโดย Nginx

ตามหลักการแล้ว ฉันต้องการโฮสต์ Wordpress บนเซิร์ฟเวอร์เดี่ยวของตัวเอง (ไม่ว่าจะเป็น Docker ที่เก็บคอนเทนเนอร์หรือไม่ก็ตาม ไม่ใช่ปัญหาใหญ่) และในการกำหนดค่า nginx สำหรับไซต์หลักของเรา ให้ย้อนกลับไปยังเซิร์ฟเวอร์ภายนอกนั้นสำหรับ URL ที่ระบุ (เช่น https://www.example.com/blog จะชี้ไปที่ IP/โฮสต์ของเซิร์ฟเวอร์ภายนอกที่ ใช้เวิร์ดเพรส)

คุณจะบรรลุเป้าหมายนี้/เป็นไปได้อย่างไร? นี่คือ nginx.conf ปัจจุบันสำหรับเซิร์ฟเวอร์หลักของเรา

server {
    listen 80;
    listen [::]:80;
    listen       443 default_server ssl;
    server_name  www.example.com.au;

    ssl_certificate      /etc/nginx/cert.crt;
    ssl_certificate_key  /etc/nginx/cert.key;

    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA256:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EDH+aRSA+AESGCM:EDH+aRSA+SHA256:EDH+aRSA:EECDH:!aNULL:!eNULL:!MEDIUM:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED";

    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";

    if ($scheme = http) {
        return 301 https://$server_name$request_uri;
    }

    location / {
         proxy_pass http://localhost:8080;
         proxy_redirect http://www.example.com.au /;
         proxy_set_header    Host            $host;
         proxy_set_header    X-Real-IP       $remote_addr;
         proxy_set_header    X-Forwarded-for $remote_addr;
         proxy_read_timeout 600s;
         port_in_redirect off;
    }
}

นี่คือตัวอย่างของ nginx.conf ปัจจุบันของเรา ดังที่คุณเห็น เว็บไซต์จริงโฮสต์อยู่บน localhost:8080 และเราเป็นเพียงการเปลี่ยนเส้นทางพร็อกซีสำหรับไซต์หลัก


person mdedetrich    schedule 17.07.2015    source แหล่งที่มา


คำตอบ (1)


สมมติว่าบริการ wordpress โฮสต์อยู่ใน http://localhost:8081 จากนั้นคุณสามารถ proxy_pass คำขอ /blog ไปยัง http://localhost:8081 คุณสามารถเพิ่มบล็อกต่อไปนี้ลงในบล็อก nginx server ของคุณ:

    location ^~ /blog {
         proxy_pass http://localhost:8081;
    }
person Freeznet    schedule 17.07.2015