Điểm:1

trang wordpress, đăng url trên nginx bên trong docker container tự động chuyển hướng đến tên miền gốc với trạng thái 301

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 nó ngay lập tức chuyển hướng đến tên miền gốc http://my_domain.com

bài đăng wordpress nginx, url trang tự động chuyển hướng đến tên miền gốc

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

Đâ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ả lại 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); 

if ( 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
lá cờ in
Định cấu hình URL chính xác trong WordPress.
lá cờ in
Xem https://serverfault.com/questions/955478/how-to-retain-domain-name-in-url-conforming-virtual-host-in-apache-2-with-aws/957005#957005
Kim Mỹ avatar
lá cờ cn
tôi có cần thêm www https://i.stack.imgur.com/FvBkp.png không
lá cờ in
Vui lòng thêm thông tin về vùng chứa WordPress. Nó có phải là một hình ảnh chính thức? Nếu có, vui lòng thêm tất cả các biến env mà bạn đã cung cấp cho nó. Nếu không, hãy thêm cấu hình máy chủ web từ vùng chứa đó. Bạn có thể chỉnh sửa câu hỏi của mình để cung cấp thêm thông tin.
Kim Mỹ avatar
lá cờ cn
Tôi đã cập nhật các câu hỏi với tệp docker-compose
Kim Mỹ avatar
lá cờ cn
và tập tin .env môi trường

Đă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.