ฉันจะพร็อกซีเว็บไซต์จาก 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 ส่งคืนการตอบกลับที่ว่างเปล่า