我正在努力将Dockerized博客堆栈(Wordpress + MariaDB)添加到我们在Nginx上运行的现有网站。 location /
已经提供了网站,我已被指示为Nginx配置添加逻辑,其中/blog
将所有流量重定向到Docker容器。
localhost:9999
启动了wordpress容器。
location ^~ /blog {
proxy_pass http://localhost:9999;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
}
的问题:
Wordpress将http://server/blog
重定向到http://wp-admin/install.php
,由于没有规则,我得到了404。
我将location
更改为处理/blog
以及包含wp-.*
的任何网址。假设所有Wordpress页面都有该URL。
location ~ ^/(blog|wp-.*) {
这通过Wordpress设置完成。
如果我明确访问http://server/wp-admin
,我可以访问博客管理页面。
问题:
http://server/?p=31
是博客文章的链接。 只是为了它,我将location /
重定向到Docker容器,博客完美无缺。但遗憾的是,这不是我的问题陈述。
我接下来要做什么,以便为所有特定于wordpress的请求提供服务?当我在这里可能有一个更优雅的解决方案时,我觉得我正在进入战斗正则表达式的循环。
答案 0 :(得分:2)
根据自我回答的问题https://stackoverflow.com/a/41479776/1264360
// add these lines to wp-config.php
define('WP_SITE_URL', 'http://example.com/blog');
define('WP_HOME', 'http://example.com/blog');
$_SERVER['REQUEST_URI'] = '/blog' . $_SERVER['REQUEST_URI'];
答案 1 :(得分:0)
假设您想通过wp
子目录访问wordpress网站。例如:
这是我如何在不更改wp-config.php的情况下使其正常工作的方法。关键是使用working_dir
指令。
docker-compose.yml
version: '3'
services:
nginx:
image: nginx:1.17
container_name: nginx
restart: unless-stopped
depends_on:
- wordpress
ports:
- '80:80'
networks:
- app-network
volumes:
- ./config/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
db:
image: mysql:5.7
container_name: db
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
networks:
- app-network
wordpress:
container_name: wordpress
depends_on:
- db
image: wordpress:latest
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
working_dir: /var/www/html/wp
volumes:
- wordpress:/var/www/html/wp
networks:
- app-network
networks:
app-network:
driver: bridge
volumes:
db_data:
wordpress:
nginx.conf
events {}
http {
server {
listen 80;
location /wp/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://wordpress;
}
}
}