全球主机交流论坛

标题: Nginx设置反代,WP首页一直301 (已解决) [打印本页]

作者: ensky    时间: 2024-10-18 17:17
标题: Nginx设置反代,WP首页一直301 (已解决)
本帖最后由 ensky 于 2024-10-19 21:25 编辑

有没有大佬遇到过这样的问题:

我有两台VPS,前端的VPS作为Nginx反代服务器,后端的一台正常部署网站。

后端的这台也是使用Nginx部署的网站,使用Wordpress.

反代设置成功后,访问都正常。直到把Wordpress 后台,阅读这个地方设置为静态网页。再访问首页就一直301,但是访问www.domain.com/home/就很正常。

如果Wordpress 后台设置为:latest posts 。那么访问www.domain.com就不会301了,就是正常的。

这是啥原因啊?尝试了很多方法也没有解决。
作者: cicvc    时间: 2024-10-18 17:19
wp-config里面设置允许多站点了吗

作者: itxp    时间: 2024-10-18 17:21
难得在loc讨论技术问题,真怀念以前啊,帮顶一下
作者: 心外无物    时间: 2024-10-18 17:21
WP本身的问题,当然如果WP内部可以怎么设置一下就能允许反代我就不知道了。
作者: Jianrry    时间: 2024-10-18 18:00
可能是 nginx 的伪静态问题
作者: amiguo    时间: 2024-10-18 18:09
你扔给GPT帮你看看,包解决的
作者: ensky    时间: 2024-10-18 21:32
cicvc 发表于 2024-10-18 17:19
wp-config里面设置允许多站点了吗

我刚试了试,还是报错:重定向次数过多。
作者: ensky    时间: 2024-10-18 21:34
心外无物 发表于 2024-10-18 17:21
WP本身的问题,当然如果WP内部可以怎么设置一下就能允许反代我就不知道了。 ...

嗯,这么说也有道理,因为默认的“latest Post”就挺正常。就是设置为静态页面,就不行了。但是访问 domain.com/home/又可以正常显示。只有访问域名不行。
作者: ensky    时间: 2024-10-18 21:52
Jianrry 发表于 2024-10-18 18:00
可能是 nginx 的伪静态问题

我把伪静态去掉了,URL改为默认的方式了:https://example.com/?p=123 。确实不报301了,首页也正常了。

大佬厉害,但是我需要这个伪静态,这个带问号的方式不行啊。


作者: ensky    时间: 2024-10-18 21:55
amiguo 发表于 2024-10-18 18:09
你扔给GPT帮你看看,包解决的

问了好多遍了,还是没解决。
作者: whoamie    时间: 2024-10-18 22:02
hosts设置没
作者: ensky    时间: 2024-10-18 22:26
whoamie 发表于 2024-10-18 22:02
hosts设置没

大佬,这个是在后端的服务器设置吧?

我刚在后端服务器设置了一下,没起作用。

设置为 123.7.33.99 www.qian-duan.com  不行,改为123.7.33.99 www.houduan-duan.com  的也不行
作者: skysf    时间: 2024-10-18 22:34
ensky 发表于 2024-10-18 21:52
我把伪静态去掉了,URL改为默认的方式了:https://example.com/?p=123 。确实不报301了,首页也正常了。
...

不是wordpress的固定链接,是nginx的规则https://www.google.com/search?q=wordpress+nginx+%E4%BC%AA%E9%9D%99%E6%80%81
作者: ensky    时间: 2024-10-18 22:42
skysf 发表于 2024-10-18 22:34
不是wordpress的固定链接,是nginx的规则https://www.google.com/search?q=wordpress+nginx+%E4%BC%AA%E9 ...

那咋改呢?我现在用的宝塔面板,面板中就有一个伪静态规则的设置。如果不用Nginx反代的模式,直接www.houduan.com放到后端服务器上建站,就没有问题。说明规则也是可以用的。

就是前端加一个反代就不行了。
作者: clak    时间: 2024-10-18 22:53
防跨站关了吗
作者: ensky    时间: 2024-10-18 23:33
clak 发表于 2024-10-18 22:53
防跨站关了吗

关了试验了一下,还是没解决。谢谢
作者: Jianrry    时间: 2024-10-19 00:08
ensky 发表于 2024-10-18 21:52
我把伪静态去掉了,URL改为默认的方式了:https://example.com/?p=123 。确实不报301了,首页也正常了。
...


你自己修改一下伪静态的规则,不要使用宝塔默认的伪静态规则。
作者: skysf    时间: 2024-10-19 00:20
ensky 发表于 2024-10-18 22:42
那咋改呢?我现在用的宝塔面板,面板中就有一个伪静态规则的设置。如果不用Nginx反代的模式,直接www.hou ...


那我理解错你意思了。
看看反代的机器上,填的wordpress地址末尾有没有/,有的话去掉。填的是不是https
用的是不是标准端口?反代机器上加上
  1. proxy_set_header Host $host:$server_port;
复制代码

重启nginx后用无痕窗口打开看看行不行
作者: ensky    时间: 2024-10-19 01:20
skysf 发表于 2024-10-19 00:20
那我理解错你意思了。
看看反代的机器上,填的wordpress地址末尾有没有/,有的话去掉。填的是不是https
...


末尾的/去掉了。
填的是https

我之前配置的是proxy_set_header Host  www.hou-duan.com; 这样就会导致访问www.qian-duan.com一直301.

我改为您说的这个proxy_set_header Host $host : $server_port; ,访问 www.qian-duan.com的时候,没有301了,直接显示了反代的静态网站,没有显示后端的WP网站。
作者: ensky    时间: 2024-10-19 01:28
Jianrry 发表于 2024-10-19 00:08
你自己修改一下伪静态的规则,不要使用宝塔默认的伪静态规则。

不会改,怎么问一下GPT,给一个正确的呢?
作者: Jianrry    时间: 2024-10-19 11:23
ensky 发表于 2024-10-19 01:28
不会改,怎么问一下GPT,给一个正确的呢?

思路已经告诉你了,剩下的可以问 chatgpt ,chatgpt 完全可以搞定。

我前几天接了一个200¥的单子,交付时联系不上对方,现在一分钱都没收到。

这一段时间我心情不好,没有心情回答问题,也没有心情接单。
作者: ensky    时间: 2024-10-19 12:01
Jianrry 发表于 2024-10-19 11:23
思路已经告诉你了,剩下的可以问 chatgpt ,chatgpt 完全可以搞定。

我前几天接了一个200¥的单子,交付 ...

麻烦大佬了,谢谢
作者: 无名渔夫    时间: 2024-10-19 14:23
这个问题我也遇到过,我的解决方法如下:

1、首先在域名商那里,把域名解析到前端服务器的IP
2、打开前端的宝塔面板,点击添加新站点,注意,创建新站点的时候,根目录要和你后端的网站根目录保持一致,前端的数据库和PHP可都不选
3、创建好以后,在新添加的站点申请证书,申请成功后,开启强制https,然后复制这个证书,粘贴到后端网站的SSL上,同样开启强制https
4、在你的后端宝塔的网站设置中,检查网站绑定的域名是否和前端绑定的域名一样,切记,后端网站的域名绑定不要用IP绑定,要填和前端一样的域名,
5、修改前端服务器的hosts文件(/etc/hosts),在最后面添加一行dns记录:
后端服务器IP地址 域名.com
例:123.123.123.123 **.com

6、/etc/hosts的dns添加之后,打开hosts.debian.tmp文件,文件位置在:/etc/cloud/templates/hosts.debian.tmp
同样在该文件最后面添加一行dns记录:后端服务器IP地址 域名.com
Ps:某些厂商的服务器重启之后,/etc/hosts文件会自动还原为默认配置,导致修改的hosts配置失效,所以还需要在/etc/cloud/templates/hosts.debian.tmp文件内再添加一条相同的dns记录
另外,/etc/cloud/templates/hosts.debian.tmp只有debian系统才有,如果你是unbanto或centos,请自行查找对应系统的hosts修改重启失效解决方法

7、在前端的面板中,创建反向代理,设置如下:
目标URL:https://example.com
发送域名:example.com
目标URL必须带https,不能是http
内容替换默认不填写

8、打开后端宝塔面板,在网站的伪静态设置一栏中,选择wordpress伪静态,然后保存

9、重启前端和后端服务器,反向代理就应该能正常生效了

10、进入wordpress仪表盘后台,在“设置”--“固定连接”,选择自定义结构:/%post_id%.html
作者: ensky    时间: 2024-10-19 20:22
无名渔夫 发表于 2024-10-19 14:23
这个问题我也遇到过,我的解决方法如下:

1、首先在域名商那里,把域名解析到前端服务器的IP

大佬牛逼,成功了,哈哈哈。私信我一个您的微信收款码,怎么着也得送瓶大可乐

就是第6步中的/etc/cloud/templates/hosts.debian.tmp文件没有找到。我的VPS上只有hosts, hosts.allow, hosts.deny, 就是没收到这个hosts.debian.tmp

我的系统是Debian GNU/Linux 11 x86_64

大佬这个思路太好了,域名解析到前端服务器,然后前端Nginx在做解析的时候,优先解析本地的hosts文件,然后指向后端IP,进而转发到后端。后端使用的域名和前端一样,彻底解决了前后端域名不一致的问题。牛啊
作者: Microcharon    时间: 2024-10-19 20:27
host问题吧:https://www.microcharon.com/tech/165.html
作者: ensky    时间: 2024-10-19 21:24
Microcharon 发表于 2024-10-19 20:27
host问题吧:https://www.microcharon.com/tech/165.html

谢谢大佬,这个思路和我原来的思路不一样,我之前使用的是前后端不同的域名。

楼上刚才给的思路我配置成功了,和您分享的这个思路类似,前后端是同一个域名。




欢迎光临 全球主机交流论坛 (https://lilynana.eu.org/) Powered by Discuz! X3.4