Score:0

try_files nginx dockerized ทำให้ url wordpress dockerized (ยกเว้น / wp-admin) เป็น 500 Internal Server Error หรือเปลี่ยนเส้นทางอัตโนมัติไปยังโดเมนรูท

ธง cn

ฉันตั้งค่าไซต์ wordpress ที่ทำงานบน nginx ที่เชื่อมต่อเรียบร้อยแล้ว เมื่อเว็บไซต์ wordpress เปิดใช้งาน ฉันสามารถไปที่หน้าแรก: https://my_domain.com หรือลิงค์ใด ๆ หรือในภายหลัง wp-admin/... โดยไม่มีปัญหาใดๆ

แต่เมื่อฉันไปที่ https://my_domain.com/sample-page หรือ https://my_domain.com/post-id หรือเส้นทางใด ๆ ยกเว้นภายหลัง \wp-ผู้ดูแลระบบ จากนั้น:

เปลี่ยนเส้นทางไปยังโดเมนรูททันที http://my_domain.com ถ้าฉันตั้งค่า:

try_files $uri $uri/ /index.php$is_args$args;

หรืออย่าเปลี่ยนเส้นทางอัตโนมัติไปยังโดเมนรูท แต่กลับ 500 ข้อผิดพลาดภายในเซิร์ฟเวอร์ ถ้าฉันตั้งค่า (เพิ่ม a / หลังจาก index.php):

try_files $uri $uri/ /index.php/$is_args$args;

โดยมีเส้นทางยกเว้น /wp-admin/ เมื่อเข้าถึงเปลี่ยนเส้นทางอย่างถูกต้องไปที่ https://my_domain.com/wp-admin/login.php หากไม่ได้เข้าสู่ระบบและเพื่อ https://my_domain.com/wp-admin/ หากเข้าสู่ระบบ ใน try_files ทั้ง 2 กรณีข้างต้น

นี่คือการกำหนดค่า nginx ของฉันที่ /nginx/default.conf:

เซิร์ฟเวอร์ {
    ฟัง 80;
    ฟัง [::]:80;
    ชื่อเซิร์ฟเวอร์ my_domain.com www.my_domain.com;

    ที่ตั้ง / {
        ส่งคืน 301 https://my_domain.com$request_uri;
    }
}


เซิร์ฟเวอร์ {
    ฟัง 443 ssl http2;
    ฟัง [::]:443 ssl http2;
    ชื่อเซิร์ฟเวอร์ my_domain.com www.my_domain.com;

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

    รูท /var/www/html/wordpress;

    เปิด ssl;
    ปิด server_tokens;
    ssl_certificate /etc/nginx/ssl/live/my_domain.com/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/live/my_domain.com/privkey.pem;
    ssl_dhparam /etc/nginx/dhparam/dhparam-2048.pem;

    ssl_buffer_size 8k;
    ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
    เปิด ssl_prefer_server_ciphers;
    ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;

    add_header X-Frame-Options "SAMEORIGIN" เสมอ
    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 * data: 'unsafe-eval' 'unsafe-inline'" เสมอ;
    # add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" เสมอ;
    # เปิดใช้งานการรักษาความปลอดภัยการขนส่งที่เข้มงวดเฉพาะเมื่อคุณเข้าใจความหมาย


    ที่ตั้ง / {
          try_files $uri $uri/ /index.php$is_args$args;

          proxy_pass http://wordpress_host:80; 
          proxy_set_header โฮสต์ $http_host;
          proxy_set_header X-Forwarded-Proto $scheme;
    }

    ตำแหน่ง ~ \.php$ {
          try_files $uri =404;
          fastcgi_split_path_info ^(.+\.php)(/.+)$;
          proxy_pass http://wordpress_host:80;
          fastcgi_index index.php;
          รวม fastcgi_params;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          fastcgi_param PATH_INFO $fastcgi_path_info;

          proxy_set_header โฮสต์ $http_host;
          proxy_set_header X-Forwarded-Proto $scheme;
    }

    ตำแหน่ง ~ /\.ht {
          ปฏิเสธทั้งหมด
    }
        
    สถานที่ = /favicon.ico { 
          ปิด log_not_found; access_log off; 
    }

    ตำแหน่ง = /robots.txt { 
          ปิด log_not_found; access_log off; อนุญาตทั้งหมด 
    }

    ตำแหน่ง ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
          หมดอายุสูงสุด
          ปิด log_not_found;
    }
}

ฉันยังกำหนดค่าที่ wp-config.php:

กำหนด ('FORCE_SSL_ADMIN' จริง); 

ถ้า ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') 
$_SERVER['HTTPS']='เปิด';

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

อัปเดต:

ที่นี่นักเทียบท่าเขียนไฟล์:

รุ่น: '3';
บริการ:
  จิงซ์:
    รูปภาพ: nginx:stable-alpine
    พอร์ต:
      - "80:80" # nginx ฟัง 80
      - "443:443"
    ปริมาณ:
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
      - ./wordpress/app:/var/www/html/wordpress
  ฐานข้อมูล:
    รูป: mysql:8.0
    container_name: ตัวอย่างฐานข้อมูล
    รีสตาร์ท: เว้นแต่จะหยุด
    env_file: ./wordpress/app/.env
    สิ่งแวดล้อม:
      - MYSQL_DATABASE=ตัวอย่าง
    ปริมาณ:
      - ./wordpress/dbdata:/var/lib/mysql
      #- ./wordpress/db/db.sql:/docker-entrypoint-initdb.d/install_wordpress.sql # หากคุณมี db.sql ของอินพุตโครงการที่นี่
    คำสั่ง: '--default-authentication-plugin=mysql_native_password'

  wordpress_host:
    ขึ้นอยู่กับ:
      - ฐานข้อมูล
    ภาพ:เวิร์ดเพรส
    ชื่อคอนเทนเนอร์: wordpress_host
    พอร์ต:
      - "8080:80"
    รีสตาร์ท: เว้นแต่จะหยุด
    env_file: ./wordpress/app/.env
    สิ่งแวดล้อม:
      - WORDPRESS_DB_HOST=db:3306
      - WORDPRESS_DB_USER=ราก
      - WORDPRESS_DB_PASSWORD=ราก
      - WORDPRESS_DB_NAME=ตัวอย่าง
    ปริมาณ:
      - ./wordpress/app:/var/www/html/wordpress
ปริมาณ:
  เวิร์ดเพรสโฮสต์:
  ฐานข้อมูล

: ไฟล์ .env:

MYSQL_ROOT_PASSWORD=ราก
MYSQL_USER=ตัวอย่าง
MYSQL_PASSWORD=รหัสผ่าน
Zeitounator avatar
fr flag
หากคุณตั้งใจจะใช้ cgi ที่รวดเร็ว คุณกำลังใช้ภาพ wordpress ผิดดูแท็ก `*-fpm` การตั้งค่าปัจจุบันของคุณส่งต่อการโทรจากการกำหนดค่า nginx ไปยังเซิร์ฟเวอร์ apache ที่ทำงานภายในอิมเมจ `wordpress: ล่าสุด` ฉันค่อนข้างแน่ใจว่าปัญหาของคุณมาจากที่นั่น

โพสต์คำตอบ

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