WordPress 通过nginx代理访问配置

0、基本参数

假定你的域名是abc.com

Apache服务端口8080

nginx和Apache同在一台机器

代理后端口为80

1、配置nginx

server{
	listen 80;
	server_name abc.com;
	location / {
		#下面这两行获取真实地址,避免跳转127.0.0.1
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		
		proxy_pass http://127.0.0.1:8080;
	
	}
}

2、修改wordpress

由于配置了nginx代理后,系统会自动跳转127.0.0.1,导致无法登录,无法通过页面进行修改域名配置。

此时可以通过数据库进行直接修改

登录数据库,找的wp_options表修改

MariaDB > select * from wp_options where option_name='home' or option_name='siteurl';
+-----------+-------------+--------------------------------------+----------+
| option_id | option_name | option_value                         | autoload |
+-----------+-------------+--------------------------------------+----------+
|         2 | siteurl     | https://abc.com                      | on       |
|         3 | home        | https://abc.com                      | on       |
+-----------+-------------+--------------------------------------+----------+

修改option_value 为域名即可。

Apache2 用户权限

服务器环境

apache2 (这个2好关键)

网上的解决方式

文件夹权限问题

通过chown修改wordpress所在目录的拥有者为你的ftp用户,然后利用chmod -R 755 给予权限,结果失败了…

修改wp-config配置文件

本质和上面那个是一样的,具体设置可以google,但是依旧失败了…

开始思考apache在哪个用户下运行

依照网上的命令,在linux shell下敲ps -ef |grep httpd,出现了

stinson  10748 10332  0 00:09 pts/0    00:00:00 grep –color=auto httpd

当时心一凉,以为这个没问题,apache就是运行在stinson(我的用户名)下的

当我敲了一个 ps -aux

root     10567  0.0  1.5 311108 15976 ?        Ss   Mar25   0:00 /usr/sbin/apache2 -k start

www-data 10571  0.0  3.6 318572 37508 ?        S    Mar25   0:00 /usr/sbin/apache2 -k start

www-data 10572  0.0  2.3 312744 24364 ?        S    Mar25   0:00 /usr/sbin/apache2 -k start

www-data 10573  0.0  2.7 314816 28360 ?        S    Mar25   0:00 /usr/sbin/apache2 -k start

www-data 10574  0.0  2.7 314852 28312 ?        S    Mar25   0:00 /usr/sbin/apache2 -k start

www-data 10575  0.0  2.6 314848 27312 ?        S    Mar25   0:00 /usr/sbin/apache2 -k start

www-data 10580  0.0  2.3 314564 24320 ?        S    Mar25   0:00 /usr/sbin/apache2 -k start

www-data 10601  0.0  2.4 314612 24812 ?        S    Mar25   0:00 /usr/sbin/apache2 -k start

www-data 10602  0.0  2.8 314816 29152 ?        S    Mar25   0:00 /usr/sbin/apache2 -k start

www-data 10603  0.0  2.3 314680 24216 ?        S    Mar25   0:00 /usr/sbin/apache2 -k start

本宝宝后知后觉,之前ps -ef |grep httpd命令显示的是这个命令本身的进程,这个命令在apache(没有2)环境下是可以找到的,但是我现在是apache2,apache2默认的用户名是www-data,所以我用root用户切换到/etc/apache2/目录下,找到apache2.cpnf文件,把这里两行改成我自己的用户和用户组:

# These need to be set in /etc/apache2/envvars

User stinson

Group stinson

至此,问题解决,这个故事告诉我们,不要硬抄网上的解决方式,那可能是古老的方式了。。。

Apache2 https配置

vi /etc/apache2/sites-available/default-ssl.conf

1、添加证书信息

      SSLEngine on

      #   A self-signed (snakeoil) certificate can be created by installing

      #   the ssl-cert package. See

      #   /usr/share/doc/apache2/README.Debian.gz for more info.

      #   If both key and certificate are stored in the same file, only the

      #   SSLCertificateFile directive is needed.

  #     SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem

  #     SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

  SSLCertificateFile      /etc/letsencrypt/live/你的证书目录/fullchain.pem

  SSLCertificateKeyFile /etc/letsencrypt/live/你的证书目录/privkey.pem

2、运行命令a2enmod  ssl 开启SSL模块很重要 /关闭a2dismod ssl

3、运行命令a2ensite default-ssl.conf启用ssl站点很重要

4、重启Apache2或者 service apache2 reload

5、apachectl configtest   # 检查apache配置是否正确

腾讯云图