Điểm:0

dockerized nginx try_files gây ra url wordpress dockerized (ngoại trừ /wp-admin) thành 500 Lỗi máy chủ nội bộ hoặc tự động chuyển hướng đến miền gốc

lá cờ cn

Tôi đã thiết lập thành công một trang wordpress chạy trên nginx dockerized. Khi trang wordpress hoạt động, tôi có thể vào trang chủ: https://my_domain.com hoặc bất kỳ liên kết hoặc sau wp-admin/... mà không có bất kỳ vấn đề.

Nhưng khi tôi đi đến https://my_domain.com/sample-page hoặc https://my_domain.com/post-id hoặc bất kỳ tuyến đường nào ngoại trừ sau \wp-quản trị viên sau đó nó:

ngay lập tức chuyển hướng đến tên miền gốc http://my_domain.com nếu tôi đặt:

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

hoặc không tự động chuyển hướng đến tên miền gốc mà quay lại 500 Lỗi máy chủ nội bộ nếu tôi đặt (thêm một / sau index.php):

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

với tuyến đường ngoại lệ /wp-admin/ khi truy cập chuyển hướng chính xác đến https://my_domain.com/wp-admin/login.php nếu chưa đăng nhập và để https://my_domain.com/wp-admin/ nếu đã đăng nhập, trong cả 2 trường hợp try_files ở trên.

Đây là cấu hình nginx của tôi tại /nginx/default.conf:

người phục vụ {
    nghe 80;
    nghe [::]:80;
    server_name my_domain.com www.my_domain.com;

    địa điểm / {
        trả về 301 https://my_domain.com$request_uri;
    }
}


người phục vụ {
    nghe 443 ssl http2;
    nghe [::]:443 ssl http2;
    server_name my_domain.com www.my_domain.com;

    chỉ mục index.php index.html index.htm;

    gốc/var/www/html/wordpress;

    ssl trên;
    server_tokens tắt;
    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;
    bật ssl_prefer_server_ciphers;
    ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;

    add_header X-Frame-Options luôn luôn "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block" luôn luôn;
    add_header X-Content-Type-Options "nosniff" luôn;
    add_header Chính sách người giới thiệu luôn "không có người giới thiệu khi hạ cấp";
    add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" luôn;
    # add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" luôn;
    # chỉ kích hoạt bảo mật vận chuyển nghiêm ngặt nếu bạn hiểu ý nghĩa


    địa điểm / {
          try_files $uri $uri/ /index.php$is_args$args;

          proxy_pass http://wordpress_host:80; 
          proxy_set_header Máy chủ $http_host;
          proxy_set_header X-Forwarded-Proto $scheme;
    }

    vị trí ~ \.php$ {
          try_files $uri =404;
          fastcgi_split_path_info ^(.+\.php)(/.+)$;
          proxy_pass http://wordpress_host:80;
          fastcgi_index index.php;
          bao gồm fastcgi_params;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          fastcgi_param PATH_INFO $fastcgi_path_info;

          proxy_set_header Máy chủ $http_host;
          proxy_set_header X-Forwarded-Proto $scheme;
    }

    vị trí ~ /\.ht {
          Phủ nhận tất cả;
    }
        
    vị trí = /favicon.ico { 
          log_not_found tắt; truy cập_đăng xuất; 
    }

    vị trí = /robots.txt { 
          log_not_found tắt; truy cập_đăng xuất; chấp nhận tất cả; 
    }

    vị trí ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
          hết hạn tối đa;
          log_not_found tắt;
    }
}

Mình cũng config tại wp-config.php:

xác định ('FORCE_SSL_ADMIN', đúng); 

nếu ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') 
$_SERVER['HTTPS']='bật';

xác định ('WP_SITEURL', 'https://www.my_domain.com/');
xác định ('WP_HOME', 'https://www.my_domain.com/');

Cập nhật:

Đây là tập tin soạn thảo docker:

phiên bản: '3';
dịch vụ:
  nginx:
    hình ảnh: nginx:ổn định-alpine
    cổng:
      - "80:80" # nginx nghe trên 80
      - "443:443"
    khối lượng:
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
      - ./wordpress/app:/var/www/html/wordpress
  đb:
    hình ảnh: mysql:8.0
    container_name: ví dụ db
    khởi động lại: trừ khi dừng
    env_file: ./wordpress/app/.env
    môi trường:
      - MYSQL_DATABASE=ví dụ
    khối lượng:
      - ./wordpress/dbdata:/var/lib/mysql
      #- ./wordpress/db/db.sql:/docker-entrypoint-initdb.d/install_wordpress.sql #nếu bạn có db.sql của dự án đầu vào ở đây
    lệnh: '--default-authentication-plugin=mysql_native_password'

  wordpress_host:
    phụ thuộc:
      - db
    hình ảnh: wordpress
    container_name: wordpress_host
    cổng:
      - "8080:80"
    khởi động lại: trừ khi dừng
    env_file: ./wordpress/app/.env
    môi trường:
      - WORDPRESS_DB_HOST=db:3306
      - WORDPRESS_DB_USER=root
      - WORDPRESS_DB_PASSWORD=gốc
      - WORDPRESS_DB_NAME=ví dụ
    khối lượng:
      - ./wordpress/app:/var/www/html/wordpress
khối lượng:
  máy chủ wordpress:
  dbdata

: tập tin .env:

MYSQL_ROOT_PASSWORD=gốc
MYSQL_USER=ví dụ
MYSQL_PASSWORD=mật khẩu
Zeitounator avatar
lá cờ fr
Nếu bạn có ý định sử dụng cgi nhanh, bạn đang sử dụng hình ảnh wordpress sai.Nhìn vào các thẻ `*-fpm`. Thiết lập hiện tại của bạn chuyển tiếp các cuộc gọi từ cấu hình nginx của bạn đến máy chủ apache chạy bên trong hình ảnh `wordpress:latest`. Tôi khá chắc chắn rằng vấn đề của bạn đến từ đó.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.