Score:0

Proxy เว็บไซต์จาก Docker ผ่าน Nginx โดยไม่ต้องทำหน้าที่เป็น localhost

ธง co

ฉันจะพร็อกซีเว็บไซต์จาก Docker ผ่าน Nginx โดยไม่ทำหน้าที่เป็น localhost ได้อย่างไร

การตั้งค่าปัจจุบันของฉันประกอบด้วยโฮสต์ Ubuntu ที่มีคอนเทนเนอร์ Docker สองสามตัวพร้อมพอร์ตที่เปิดเผยคอนเทนเนอร์ Docker จะถูกเปิดเผยในเครื่องเท่านั้น การเปิดเผยบนอินเทอร์เน็ตประกอบด้วยเซิร์ฟเวอร์ Nginx ที่พร็อกซีคอนเทนเนอร์ Docker ไปยังโดเมนย่อยบางโดเมน

ในคอนเทนเนอร์ Docker ฉันเรียกใช้ Wordpress ฉันดึงมันมาจาก ฮับนักเทียบท่า ใช้ไฟล์ YML นี้:

รุ่น: '3.1'

บริการ:

  เวิร์ดเพรส:
    container_name: myapp-cms
    ภาพ:เวิร์ดเพรส
    รีสตาร์ท: เสมอ
    พอร์ต:
      - 8087:80
    สิ่งแวดล้อม:
      WORDPRESS_DB_HOST: ฐานข้อมูล
      WORDPRESS_DB_USER: ตัวอย่างผู้ใช้
      WORDPRESS_DB_PASSWORD: รหัสผ่านตัวอย่าง
      WORDPRESS_DB_NAME: ตัวอย่างb
    ปริมาณ:
      - /srv/wordpress/cms:/var/www/html

  ฐานข้อมูล:
    container_name: myapp-db
    รูป: mysql:5.7
    รีสตาร์ท: เสมอ
    สิ่งแวดล้อม:
      MYSQL_DATABASE: exampleb
      MYSQL_USER: ตัวอย่างผู้ใช้
      MYSQL_PASSWORD: ตัวอย่างรหัสผ่าน
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    ปริมาณ:
      - /srv/wordpress/db:/var/lib/mysql

คอนเทนเนอร์ Docker นี้เปิดเผยพอร์ตภายใน 8087 ซึ่งฉันใช้พร็อกซีไป mysubdomain.mydomain.com. นี่คือไฟล์กำหนดค่า Nginx:

เซิร์ฟเวอร์ {
        รูท /var/www/mysubdomain.mydomain.com;
        ดัชนี index.html index.htm index.nginx-debian.html;

        server_name mysubdomain.mydomain.com;

        client_max_body_size 1,000M;

        ที่ตั้ง / {
                # try_files $uri $uri/ =404;
                proxy_pass http://localhost:8087;
        }

    ฟัง 443 ssl; # จัดการโดย Certbot
    ssl_certificate /etc/letsencrypt/live/mydomain.com-0003/fullchain.pem; # จัดการโดย Certbot
    ssl_certificate_key /etc/letsencrypt/live/mydomain.com-0003/privkey.pem; # จัดการโดย Certbot
    รวม /etc/letsencrypt/options-ssl-nginx.conf; # จัดการโดย Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # จัดการโดย Certbot
}
เซิร์ฟเวอร์ {
    ถ้า ($host = mysubdomain.mydomain.com) {
        ส่งคืน 301 https://$host$request_uri;
    } # จัดการโดย Certbot


        ฟัง 80;

        server_name mysubdomain.mydomain.com;
    กลับ 404; # จัดการโดย Certbot
}

ปัญหาคือหน้า (ในกรณีนี้คือ Wordpress) ยังคงใช้อยู่ localhost:8087 สำหรับทุกลิงค์ สิ่งนี้จะทำลายทุกความเป็นไปได้ในการคลิกที่บางสิ่ง และยังทำลายการโหลดไลบรารี CSS และ JavaScript

ป้อนคำอธิบายรูปภาพที่นี่

แก้ไข 1:

ฉันเพิ่มสองบรรทัดต่อไปนี้ใน wp-config.php:

กำหนด ('WP_HOME','https://mysubdomain.mydomain.com');
กำหนด ('WP_SITEURL','https://mysubdomain.mydomain.com');

โหลดหน้าการตั้งค่าได้สำเร็จและปรับชื่อโดเมนด้วย ฉันสามารถติดตั้ง WordPress ได้สำเร็จ แต่ทันทีที่ฉันบันทึกการตั้งค่า (ชื่อผู้ใช้ รหัสผ่าน อีเมล) เบราว์เซอร์ก็โหลดหน้าว่างขึ้นมา โทร curl -X รับ https://mysubdomain.mydomain.com ส่งคืนการตอบกลับที่ว่างเปล่า

Score:1
ธง cg

ลองตั้งค่า ที่อยู่ไซต์ และ ที่อยู่เวิร์ดเพรส .

  1. ไปที่ การตั้งค่า >> ทั่วไป
  2. ตั้งค่าที่อยู่ WordPress (URL) และที่อยู่เว็บไซต์โดยใช้ fqdn ของคุณ

ป้อนคำอธิบายรูปภาพที่นี่

อ้างอิง

สำหรับข้อมูลเพิ่มเติมอย่างเป็นทางการ: เอกสารเวิร์ดเพรส

Socrates avatar
co flag
ขอขอบคุณสำหรับข้อมูล. ฉันโหลดได้เฉพาะหน้าแรกเท่านั้น แต่ทุกลิงก์ในนั้นนำไปสู่ ​​`http://localhost:8087/...` ซึ่งหมายความว่าไม่สามารถเข้าสู่ระบบได้ จากนั้นฉันตั้งค่า Docker WordPress บนแล็ปท็อปของฉัน จากนั้นตั้งค่าที่อยู่ WordPress และที่อยู่ไซต์เป็น `https://mysubdomain.mydomain.com` จากนั้นคัดลอกฐานข้อมูลในเครื่องและเนื้อหา CMS ไปยังเว็บเซิร์ฟเวอร์ระยะไกล . แม้ว่าในทางเทคนิคแล้วควรพูด แต่ก็ยังไม่ใช่ด้วยเหตุผลบางประการ หน้าเว็บไม่โหลดเลยและ `curl -X GET https://mysubdomain.mydomain.com` ทำให้ไม่ตอบสนองเลย
Socrates avatar
co flag
เพิ่ม **แก้ไข 1** ในโพสต์เริ่มต้นของฉันด้วยการกำหนดค่าที่ค่อนข้างใช้ได้สำหรับการเริ่มต้น แต่ล้มเหลวในภายหลัง (อธิบายไว้ด้านบน)

โพสต์คำตอบ

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