实际需求
只有一个ip地址,要在一台服务器上部署多个不同的网站。这些网站使用不同的域名(如a.com b.com),服务器要能根据域名提供对应的服务。
解决方案
反向代理
反向代理的工作原理如上图所示,右侧的三台主机表示同一个服务器的三个不同端口。a.com和b.com都解析到这个服务器的ip地址。反向代理服务部署在80端口,根据用户访问的域名向8000端口的服务1或8001端口的服务2发送请求,再将响应返回给用户。
反向代理对于用户来说是不可见的,用户访问a.com和b.com都能得到正确的响应,无法注意到它们是同一个服务器代理的。
nginx的安装
1 2 |
sudo apt-get install nginx |
nginx服务的启动与停止
-
启动nginx服务
12sudo /etc/init.d/nginx start -
重启nginx服务
12sudo /etc/init.d/nginx restart -
停止nginx服务
12sudo /etc/init.d/nginx stop
修改配置文件
1 2 3 4 5 6 |
# 修改配置文件(修改后需要重启nginx服务才能生效) sudo vim /etc/nginx/nginx.conf # 检查配置文件语法 sudo nginx -t -c /etc/nginx/nginx.conf |
反向代理的配置
nginx有两种配置方式,一种是配置文件/etc/nginx/nginx.conf
,另一种是站点文件夹/etc/nginx/sites-enabled/*
,配置文件实现反向代理的设置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# /etc/nginx/nginx.conf http { # include /etc/nginx/conf.d/*.conf; # include /etc/nginx/sites-enabled/*; # 以上是默认就有的 将server添加在后面即可 server { listen 80; #监听80端口 server_name www.a.com a.com; #监听访问的host location / { # 站点的所有路径都使用代理 proxy_pass http://127.0.0.1:8000; } } server { listen 80; #监听80端口 server_name www.b.com b.com; #监听访问的host location / { proxy_pass http://127.0.0.1:8001; } } } |
使用站点文件夹部署WordPress
/etc/nginx/sites-available/
存放的是可用的站点,在/etc/nginx/sites-enabled/
建立可用站点的软链接,来启动网站。
在可用站点文件夹新建一个文件:
1 2 3 |
# !-bash sudo vim /etc/nginx/sites-available/wordpress |
添加以下内容后保存(注意修改成WordPress路径和php版本):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
server { listen 80; listen [::]:80; root /var/www/html/wordpress; # 这里修改成WordPress路径 index index.php index.html index.htm; server_name example.com www.example.com; # 这里修改成你的域名 client_max_body_size 100M; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; # 这里修改成你的php版本 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } |
建立软链接来启动网站:
1 2 3 |
# !-bash sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/ |
扩展资料
[配置文件里location的规则]
https://www.cnblogs.com/NJM-F/p/10075080.html
https://www.cnblogs.com/ustc-anmin/p/10878636.html
[WordPress 改url地址导致页面无法进入的问题] https://blog.csdn.net/csdn821583043/article/details/82700245