繁体   English   中英

Nginx、WordPress 6、Docker 和友好的 url

[英]Nginx, WordPress 6, Docker and friendly url

我需要一些帮助...如果我在 WP 中设置友好的 url,例如/%postname%/%postname%.html (docker image: wordpress:6.0-php7.4-apache) 我在博客上收到 500 内部服务器错误项目页面(列表工作正常)并且无法从管理面板更新帖子(((

如果使用带有 id 的默认链接格式(列表中的第一个) - 所有工作(从管理面板更新并在现场查看)

尝试调试并看到我在请求“/blog2/foo-bar/”时没有使用根目录中的 index.php 文件,所以 nginx conf 文件有问题(我认为)

码头工人撰写:

version: '3'
services:
    nginx:
        image: container-registry.cloud.yandex.net/crp5sduab6n1r9hgpppp/main-site-nginx:1.0
        restart: always
        ports:
            - 80:80
            - 443:443
        logging:
            driver: 'json-file'
            options:
                max-size: '30m'
                max-file: '5'
        networks:
            - main-site-network
    wordpress_db:
        container_name: 'wp-db'
        image: mysql:5.7
        restart: always
        environment:
            MYSQL_ROOT_PASSWORD: *****
            MYSQL_DATABASE: wp
            MYSQL_USER:  wpu
            MYSQL_PASSWORD: *****
        networks:
            - main-site-network
        volumes:
            - db_data:/var/lib/mysql
    wordpress:
        container_name: 'wp'
        depends_on:
            - wordpress_db
        image: wordpress:6.0-php7.4-apache
        restart: always
        environment:
            WORDPRESS_DB_HOST: wordpress_db
            WORDPRESS_DB_USER: wpu
            WORDPRESS_DB_PASSWORD: ****
            WORDPRESS_DB_NAME: wp
        networks:
            - main-site-network
        volumes:
            - wordpress_data:/var/www/html
networks:
    main-site-network:
        driver: bridge
volumes:
    ftpdata:
    db_data: {}
    wordpress_data: {}

nginx.conf:

user nginx;
worker_processes 1;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for" '
                    '"$host" sn="$server_name" '
                    'rt=$request_time '
                    'ua="$upstream_addr" us="$upstream_status" '
                    'ut="$upstream_response_time" ul="$upstream_response_length" '
                    'cs=$upstream_cache_status';

    access_log /var/log/nginx/access.log main;

    client_header_timeout 60;
    client_body_timeout 60;
    send_timeout 120;
    proxy_read_timeout 90;
    proxy_connect_timeout 90;
    proxy_send_timeout 90;

    proxy_buffer_size 256k;
    proxy_buffers 32 256k;
    proxy_temp_file_write_size 256k;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;

    gzip on;
    gzip_min_length 4096;
    gzip_buffers 32 128k;
    gzip_types text/plain text/js text/css text/javascript application/javascript application/x-javascript application/json text/xml;

    client_header_buffer_size 1k;
    large_client_header_buffers 4 4k;

    sendfile on;
    tcp_nopush on;

    postpone_output 1460;

    keepalive_timeout 65;
    tcp_nodelay on;

  resolver 127.0.0.11 8.8.8.8 ipv6=off;

    server {
        listen *:80 default_server;
        server_name domain.tld;

    gzip on;
    gzip_min_length 4096;
    gzip_buffers 32 128k;
    gzip_types text/plain text/js text/css text/javascript application/javascript application/x-javascript application/json text/xml;

        add_header X-Content-Type-Options "nosniff";
        add_header Strict-Transport-Security max-age=31536000;

        client_max_body_size 500m;

        location ~ ^/wp-admin {
      return 307 https://$server_name/blog2$request_uri;
    }

        location /blog2/ {
      proxy_set_header Host $Host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $remote_addr;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-NginX-Proxy true;
      proxy_pass http://wordpress:80/;
    }
    }
}

我认为您需要添加一个带有其他位置的块,例如 blog2

修复上述示例(将SUBFOLDER替换为您的子路径):

码头工人-compose.yml

wordpress:
    volumes:
        - wordpress_data:/var/www/html/SUBFOLDER

nginx.conf

  location /SUBFOLDER {
    proxy_set_header Host $Host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_pass http://wordpress:80;
  }

并且一切正常(插件、备份和其他)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM