安装Nginx于CentOS7,并将其用作Docker容器的代理

前提

上一篇文章的延续内容

服务器是CentOS7,已经在Docker容器中启动了Web服务器。
在主机服务器上,有多个Docker容器中运行的Web服务器,并且希望通过主机服务器的虚拟主机来代理它们,使其在浏览器中可见,而无需关注它们各自在哪个端口上。
在Docker容器上的Web服务器预计是开发环境,并希望对其进行基本身份验证。

安装并设置自动启动Nginx。

sudo yum install nginx
sudo systemctl start nginx
sudo systemctl enable nginx

请确认您是否可以在端口上进行监听。

# ミニマムインストールで入ってなかったのでインストール
sudo yum install lsof
sudo lsof -i :80
----
COMMAND  PID  USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
nginx   8754  root    6u  IPv4 3613680      0t0  TCP *:http (LISTEN)
nginx   8754  root    7u  IPv6 3613681      0t0  TCP *:http (LISTEN)
nginx   8755 nginx    6u  IPv4 3613680      0t0  TCP *:http (LISTEN)
nginx   8755 nginx    7u  IPv6 3613681      0t0  TCP *:http (LISTEN)
----

使其外部可见

# firewall 80, 443アクセスできるようにする
sudo firewall-cmd --add-service=https --zone=public --permanent
sudo firewall-cmd --add-service=http --zone=public --permanent
# ブラウザから nginx の index.html が見えることを確認

htpasswd 设置

sudo mkdir -p /etc/nginx/htpasswd
sudo echo "ユーザ名:$(openssl passwd -apr1 パスワード)" > /etc/nginx/htpasswd/ユーザ名
sudo chown -R nginx:nginx /etc/nginx/htpasswd
sudo chmod 600 /etc/nginx/htpasswd/ユーザ名
sudo chmod 700 /etc/nginx/htpasswd
sudo vim /etc/nginx/nginx/conf
# (省略)
http {
    auth_basic           "private site";
    auth_basic_user_file /etc/nginx/htpasswd/ユーザ名;
# (省略)
sudo nginx -s reload

确认浏览器已应用基本认证。

代理

upstream hoge.fuga.com {
    # docker コンテナが10080でポートフォワーディングしてるとする
    server 127.0.0.1:10080 weight=1;
}

server {
    listen       80;
    server_name  hoge.fuga.com;

    access_log  /var/log/nginx/hoge.fuga.access.log  main;

    location / {
        proxy_pass http://hoge.fuga.com;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
# 設定ファイルチェック
sudo nginx -t
# 設定読み込み
sudo nginx -s reload
# hoge.fuga.com にブラウザ上からアクセスして見れればOK(hostsに設定するのを忘れずに)

当Docker容器增加时,只需设置代理部分即可。

bannerAds