前言
上周拼着拼着单词,无意发现一个挺顺的5个字母的词组。不过到现在也没想到有啥寓意,但是看着就是挺顺,而且com
域名没被注册,于是我就当仁不让的注册了下来,不为别的,就是因为看着顺。
域名是啥呢?当当当,wiung.com
。
想了想自己还剩两年多的服务器不能绑定自己的域名就心痛,于是周末再次尝试能不能备案,记得上次备案wjup.top
这个域名时,阿里云那边总是提示我身份证和人脸识别不匹配,问客服说的用户口页证明是你自己也可以,这….户口页在 300公里的老家里,我还要回去拿吗,于是就放弃了。但是这次尝试居然可以了,于是按提示一顿操作,把资料都提交了,第二天阿里云的客服给我打电话,是个小姐姐,声音超级好听,爱了爱了。小姐姐说的我的备案网站名称阿杰的学习记录可能不太符合,因为带名字中的字,所以提议换成首字母,心想换就换呗,这个名字也是为了备案通过随便起的。然后今天看着域名已经在管局审核中了,应该没问题了。坐等审核通过。
啰嗦了那么多废话,进入主题。
主题
反向代理
反向代理:说说我的理解,有个场景就是当不同的域名或者同一域名不同二级域名,DNS解析到一个服务器公网IP上,然后达到访问的内容都不一样的效果,比如访问blog.wjup.top是博客,访问bss.wjup.top是论坛。这时候就会用到nginx的反向代理功能。nginx配置代反向代理也是很简单,可以根据server_name的不同反射到内部不同的端口服务上如下图。
启动linux
下面动手实践,由于没有域名可以给我们解析服务器试验,所以这里采用windows的hosts文件和一个linux虚拟机做服务器进行操作,记得刚开始学习时,修改hosts还懵懵逼逼的不太懂有啥用。到了自己买域名解析过DNS时,才发现这玩意在内部也可以当做解析DNS使用,下面一起看看吧。
首先打开我们的虚拟机,装上nginx,这里不再演示安装nginx的步骤。安装好之后,systemctl start nginx
启动,systemctl status nginx
查看状态,如下状态运行成功。
然后ip addr
查看虚拟机的ip,在浏览器打开看看是否能访问nginx默认页面。如果访问没反应,systemctl status firewalld
检查防火墙是否未关闭,然后systemctl stop firewalld
关闭即可。
修改hosts
ok,启动成功后,修改windows的host文件,随便写几个域名,然后ip写虚拟机的ip。这里在浏览器访问写的域名,就会解析到后面的ip上,所以域名不要写一些常用的域名,避免忘记更改,不能正常访问。我这里写的是我申请的域名后面加了一个v(virtual)
写好后由于虚拟机上的nginx配置文件没更改,访问这几个域名应该是nginx的默认页面,
启动服务
下面修改nginx的配置文件,来进行反向代理,为了起三个不同端口的服务,我新建了一个springboot项目,只有一个默认的mapping,访问时会读取配置文件设置的内容然后显示。
部署的时候可以用这一个jar包,然后把配置文件放到jar包同级目录下,修改不同的端口和配置的内容启动。
我在/opt/server目录下,新建了三个文件夹,server1、server2、server3。文件夹中存放jar包配置文件,然后启动
三个文件夹配置文件端口和内容分别是:
1 | server |
1 | server |
1 | server |
然后先用ip+端口的形式访问试试有没有问题
配置nginx.conf
没问题后开始修改nginx反向代理,在http包裹的大括号内添加如下内容:
1 | # server-A port:9000 |
很简单不多解释,然后systemctl restart nginx
重启nginx,在浏览器用域名直接访问查看效果。
可能问题
这里可能会有个问题,就是nginx反向代理后访问域名出现502 bad gateway
的问题,网上搜索得知是SeLinux的问题.
SeLinux是2.6edition的Linux系统内核中提供的强制访问控制(MAC)系统。算是内置的安全系统,防火墙什么的应该算是外配的。
So:解决方法有两种
关闭SeLinux
临时关闭(不用重启机器):
setenforce 0
##siteSELinux 成为permissive模式##setenforce 1 siteSELinux 成为enforcing模式
修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可
执行下面的命令
setsebool -P httpd_can_network_connect 1
SUCCESS
然后访问域名再试试。
OK!大功告成!