我有两个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”参数来指定它。
谢谢你的帮助。
1条答案
按热度按时间wbgh16ku1#
我建议你删除以前的SSL,如果你复制了它,也删除. httpacess文件,如果你从旧的复制,如果问题仍然存在,你应该检查是否有任何php扩展没有安装。