php WordPress -页面无法正确重定向

lndjwyie  于 2022-11-21  发布在  PHP
关注(0)|答案(1)|浏览(133)

我有两个WordPress网站上的Synology NAS在家里运行的NGINX与PHP-FPM 7.4与虚拟主机。
我也在家里把这些网站移到Debian VM上,并在无根Docker中运行服务:

  • MariaDB官方Docker容器
  • NGINX官方Docker容器
  • PHP-FPM官方Docker容器

这些网站通过Traefik Docker容器公开,我的DNS和Let 's Encrypt证书通过Cloudflare API管理。
当我尝试访问www.wordpress1.com时,我得到“页面重定向不正确”错误。
我试着在我的WordPress网站中添加一个phpinfo.php文件,我可以从WAN访问这些文件,没有任何问题。我试着添加一个静态网站,我可以从WAN访问它,没有任何问题。
我已经检查了两个网站的日志,我得到了很多这样的错误:

GET / HTTP/1.1" 301 5

这是我的配置文件。
NGINX组成.yaml:

version: '3'

services:
  nginx:
    image: nginx:latest
    container_name: nginx
    restart: always
    security_opt:
      - no-new-privileges:true
    networks:
      - backend
      - traefik
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
      - ./conf/servers.conf:/etc/nginx/conf.d/default.conf
      - ./log:/var/log/nginx
      - nginx_data:/var/www/html
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.nginx.entrypoints=http"
      - "traefik.http.routers.nginx.rule=Host(`static.com`,`www.wordpress1.com`,`www.wordpress2.com`)"
      - "traefik.http.middlewares.nginx-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.nginx.middlewares=nginx-https-redirect"
      - "traefik.http.routers.nginx-secure.entrypoints=https"
      - "traefik.http.routers.nginx-secure.rule=Host(`static.com`,`www.wordpress1.com`,`www.wordpress2.com`)"
      - "traefik.http.routers.nginx-secure.tls=true"
      - "traefik.http.routers.nginx-secure.service=nginx"
      - "traefik.http.services.nginx.loadbalancer.server.port=80"
      - "traefik.docker.network=traefik"

volumes:
  nginx_data:
    external: true

networks:
  backend:
    external: true
  traefik:
    external: true

NGINX服务器配置文件:

server {
    listen 80;
    server_name static.com;
    root /var/www/html/static;
    index index.html;
    error_log  /var/log/nginx/static_error.log;
    access_log /var/log/nginx/static_access.log;
}

server {
    listen 80;
    server_name www.wordpress1.com;
    root /var/www/html/wordpress1;
    index index.php index.html;
    error_log  /var/log/nginx/wordpress1_error.log;
    access_log /var/log/nginx/wordpress1_access.log;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }
}

server {
    listen 80;
    server_name www.wordpress2.com;
    root /var/www/html/wordpress2;
    index index.php index.html;
    error_log  /var/log/nginx/wordpress2_error.log;
    access_log /var/log/nginx/wordpress2_access.log;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }
}

PHP编写器.yaml:

version: '3'

services:
  php:
    build:
      context: .
      dockerfile: ./Dockerfile
    image: custom/php:7.4-fpm
    container_name: php
    restart: always
    security_opt:
      - no-new-privileges:true
    networks:
      - backend
    user: 1234:1234
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
      - nginx_data:/var/www/html

volumes:
  nginx_data:
    external: true

networks:
  backend:
    external: true

PHP停靠文件:

FROM php:7.4-fpm
RUN docker-php-ext-install mysqli

在nginx_data卷中,我的权限是1234:1234,这是我在无根Docker安装上的Docker用户UID和GID。
我的数据库在一个mariadb docker容器上,连接正常(在wp-config.php中修改)。
我不明白为什么我可以访问静态网站,为什么WordPress网站中的phpinfo可以工作,为什么WordPress网站不能工作。我认为这是一个权限问题,但我使用了PHP Docker容器中的“user”参数来指定它。
谢谢你的帮助。

wbgh16ku

wbgh16ku1#

我建议你删除以前的SSL,如果你复制了它,也删除. httpacess文件,如果你从旧的复制,如果问题仍然存在,你应该检查是否有任何php扩展没有安装。

相关问题