安装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容器增加时,只需设置代理部分即可。