使用nginx构建服务器并实现反向代理

首先

我尝试使用nginx实现了反向代理。
http:[ip地址]/ ⇒ 反向代理服务器兼web服务器
http:[ip地址]/web2 ⇒ web服务器2

设定文件

version: "3"
services:
 ngweb1:
  image: nginx:1.21.6
  ports:
   - 80:80
  volumes:
   - ./nginx/html:/usr/share/nginx/html
   - ./nginx/conf.d:/etc/nginx/conf.d

 ngweb2:
  image: nginx:1.21.6
  ports:
   - 81:80
  volumes:
   - ./nginx/html:/usr/share/nginx/html

对于“/”的情况,将连接到ngweb1容器,而对于“/ngweb2/”的情况,将连接到ngweb2容器。

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    location /web2/ {
        proxy_pass   http://ngweb2/;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

容器之间可以使用容器的服务名称进行通信。
需要注意的是,如果在“proxy_pass http://ngweb2/”中最后的斜杠“/”不存在,将会返回HTTP状态码404。因为如果没有最后的斜杠(尾随斜杠),它会尝试去ngweb1容器的/usr/share/nginx/html/web2目录寻找index.html文件。

博客

如果发现网页服务器的访问日志是空的,想要确认的话,可以通过使用 docker-compose logs 服务名 来查看日志。

最后

不需要考虑端口号,可以区分Web服务器,非常方便。
我学到了有关尾部斜杠的知识。

广告
将在 10 秒后关闭
bannerAds