我生之初,尚无为;我生之后,逢此百罹。

一个关于nginx的脑抽小测试

nginx能用作代理,也能用作http,那么有没有一种可能,一个nginx即当代理,同时又代理自己呢?

明显不能啊(不敢说绝对,可能有办法吧,只是自己不知道),有毛病,设置了代理,那么访问端口就直接代理,代理再访问自己,然后继续代理,当时也是大脑出故障了。

 

在vm准备了两台linux虚拟机,一台有docker,另一台没有。

有docker的准备了两个端口:8080和8081,没docker的只准备了8080。

IPADDR:192.168.2.131 8080 8081

IPADDR:192.168.2.132 8080

 

192.168.2.131先在docker装个nginx(当然,在此之前要准备一个Docker)

docker pull nginx:latest        --拉取镜像
docker run --name nginx-test -p 8080:80 -d nginx        --启动容器

 

然后在主机访问一下192.168.2.131:8080,哎哟,访问不了。

在192.168.2.131查看一下firewalld,发现防火墙打开状态

systemctl status firewalld

然后看看是否开放了8080端口和http服务,发现都没有,于是添加http服务和8080端口

firewall-cmd --list-all
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --reload

 

在主机刷新一下,发现可以了。

随后在192.168.2.132装一个nginx,同理,开放8080端口和http服务(因为没有装docker,这里的nginx要手动启动服务)

在主机访问一下192.168.2.132:8080,没有出错。

 

在192.168.2.131里找到default.conf文件,添加代理。

cd /var/lib/docker/overlay2
find . -name default.conf
--这时不出意外有default.conf,因为docker装nginx时没有设路径,只能这样找了
--找到关键字merged/etc/nginx
--复制整行
vim ./4d680f719cd52384905d23cd3062a60b863dee4e477bcd8711184db3ee4f3774/merged/etc/nginx/conf.d/default.conf
--在顶行添加
upstream test_server{
server 192.168.2.131:8080;
server 192.168.2.132:8080;
}
--在server块的location / { 里添加
proxy_pass http://test_server;


修改后大致如下:

upstream my_server{
    server 192.168.2.131:8080;
    server 192.168.2.132:8080;
}
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   html;
        proxy_pass http://my_server;
        index  index.html index.htm;
    }
...

这里就是脑抽的地方,192.168.2.131:8080是用nginx作代理的,然后又代理192.168.2.131:8080,我代理我自己?不过当时是这样做的。

 

修改一下192.168.2.132:8080的index.html,随便修改点什么,能看出和192.168.2.131:8080的index.html不一样就行了。

然后在主机访问192.168.2.131:8080,然后一直刷新,发现一直是192.168.2.132:8080的页面信息。

 

于是在192.168.2.132的default.conf也修改成192.168.2.131:8080的配置,然后在主机访问192.168.2.132:8080,发现直接访问不了了。

真的脑抽,192.168.2.132:8080代理访问192.168.2.131:8080,然后192.168.2.131:8080代理访问192.168.2.132:8080,纯纯套娃。

 

然后醒悟过来,在192.168.2.131的docker添加一个nginx端口选用8081(操作同上),在两台虚拟机的upstream里添加一行

    server 192.168.2.131:8081

然后在主机访问192.168.2.131:8080和192.168.2.132:8080,发现都指向192.168.2.131:8081。

 

posted @ 2022-08-16 15:35  舍旃  阅读(59)  评论(0编辑  收藏  举报
我生之初,尚无造;我生之后,逢此百忧。