首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache反向代理后的WordPress站点一直重定向到本地主机

Apache反向代理后的WordPress站点一直重定向到本地主机
EN

Stack Overflow用户
提问于 2021-01-09 16:39:04
回答 4查看 502关注 0票数 0

我正在尝试使用podman-compose在生产服务器上部署一个容器化的Wordpress (工作原理类似于docker-compose)。web服务在主机上的端口8080上公开。然后,我利用Apache的ProxyPass指令创建一个反向代理,并将请求发送到为WordPress提供服务的localhost:8080,从而使WordPress在http://example.com上可用。

我成功地将数据库和wordpress卷迁移到了服务器上。我遇到的第一个问题是,WordPress在wpoptions中将本地主机存储为siteurlhome,因此它不能在生产服务器上工作。将这些值更改为example.com (我的域)后,IT会一直重定向到本地主机。疯了!这是我的docker-compose.yaml:

代码语言:javascript
复制
version: "3.8"
services: 
  web:
    image: wordpress
    restart: always
    volumes:
      - wordpress:/var/www/html
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: user
      WORDPRESS_DB_NAME: db
      WORDPRESS_DB_PASSWORD: mypass
      WORDPRESS_DEBUG: 0
    depends_on:
      - db
    networks:
      - wpnet
  db:
    image: mariadb:10.5
    restart: always
    ports:
      - 6603:3306

    volumes:
      - wpdbvol:/var/lib/mysql

    environment:
      MYSQL_DATABASE: db
      MYSQL_USER: user
      MYSQL_PASSWORD: mypass
      MYSQL_ROOT_PASSWORD: mypass
    networks:
      - wpnet
volumes:
  wordpress: {}
  wpdbvol: {}

networks:
  wpnet: {}

下面是我的反向代理配置:

代码语言:javascript
复制
<VirtualHost *:80>

ServerName example.com
ServerAlias www.example.com

ProxyPass "/"  "https://localhost:8080"

#Allows modification of Location: headers from backend server to point to the reverse proxy
ProxyPassReverse "/"  "http://localhost:8080"
</VirtualHost>
EN

回答 4

Stack Overflow用户

发布于 2021-10-24 01:30:05

在您的情况下,问题可能是您缺少代理传递urls末尾的/

在我的例子中,我想把它提供给:https://example.com

(wordpress 5.8.1)

在数据库中(或直接在ui中),我必须同时更新siteurlhome

代码语言:javascript
复制
update wp_options set option_value="https://example.com" where option_name in ("siteurl", "home");

同时粘贴apache的反向代理设置(X-Forwarded-ProtoX-Forwarded-Port是关键设置):

代码语言:javascript
复制
<VirtualHost *:443>
  ServerName example.com
  SSLEngine on
  SSLCertificateFile "/sslcert/server.crt"
  SSLCertificateKeyFile "/sslcert/server.key"

   ProxyRequests Off
   KeepAlive Off
   <Proxy *>
      Order deny,allow
      Allow from all
   </Proxy>

   # These are required for https reverse proxy to work with wordpress  (They are read from `wp-config.php`)
   RequestHeader set X-Forwarded-Proto "https"
   RequestHeader set X-Forwarded-Port "443"   

   ProxyPass / http://localhost:8080/
   ProxyPassReverse / http://localhost"8080/
   ProxyPreserveHost On
   ErrorLog "logs/wordpress.revproxy-sslerror_log"
   CustomLog "logs/wordpress.revproxy-sslaccess_log" common
</VirtualHost>

注意:在我的案例中,我测试了反向代理,它是docker-compose的一个服务,所以在上面的设置中,我使用的是http://wpcontainer/,而不是http://localhost:8080/。但在您的情况下,上述方法应按原样工作。

票数 2
EN

Stack Overflow用户

发布于 2021-01-19 04:54:09

这是一个很长的机会,很可能是行不通的。

也许可以在compose yml environment WORDPRESS_CONFIG_EXTRA设置中将https://example.com定义为您的家庭url。

代码语言:javascript
复制
services: 
  web:
    image: wordpress
    restart: always
    volumes:
      - wordpress:/var/www/html
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: user
      WORDPRESS_DB_NAME: db
      WORDPRESS_DB_PASSWORD: mypass
      WORDPRESS_DEBUG: 0
      WORDPRESS_CONFIG_EXTRA: |
        
        /** define our home url */
        define('WP_HOME', 'https://example.com');
        define('WP_SITEURL', 'https://example.com');

    depends_on:
      - db
    networks:
      - wpnet

这个可能会强制wordpress安装到它的目的地,并阻止它重定向回localhost

另外,当我在让ngrok tunnelling访问我本地的wordpress环境时遇到了问题,我不得不安装Relative URL wordpress插件来让我的隧道工作。

不确定这是否与你的问题相关,但在尝试上面的WORDPRESS_CONFIG_EXTRA想法之前,可能值得安装Relative URL插件,看看这是否解决了本地主机重定向问题。

这个插件已经两年没有更新了,但是仍然可以和ngrok很好地协同工作。Plugin从字面上看是20行php,我猜它们可以放入你的函数中。

Ngrok允许我通过像http://example.ngrok.io/这样的https协议url访问我的本地docker compose wordpress环境,这对我处理本地webhook响应回调(我将其与stripe一起使用)很方便。

票数 1
EN

Stack Overflow用户

发布于 2021-06-20 17:29:08

对于在ssl上运行的WP遇到此问题的每个人:

如果你有Nginx作为Apache的代理,那么必须在PHP (最好是WP -config.php中)中使用$_SERVER['HTTPS'] = 'On';显式设置HTTPS全局,否则WP将继续重定向,因为Nginx在ssl上运行,而Apache不是,并且WP只能看到Apache环境。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65640780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档