Nginx逆プロキシでYUMリポジトリにアクセスする方法

1. Nginxのインストールと設定

Nginxサーバーでファイアウォールを一時的に無効化した状態で作業を進める。

# Nginxのインストール
[root@proxy-server ~]# yum install nginx -y

# 設定ファイルの作成
[root@proxy-server ~]# cd /etc/nginx/conf.d/
[root@proxy-server conf.d]# vim yum-proxy.conf

以下の逆プロキシ設定を記述する:

server {
    listen 80;
    server_name mirror.local.net;
    
    # Baseリポジトリの代理転送
    location /centos/ {
        proxy_pass http://mirrors.aliyun.com/centos/;
        proxy_set_header Host mirrors.aliyun.com;
        proxy_set_header X-Real-IP $remote_addr;
    }
    
    # EPELリポジトリの代理転送
    location /epel/ {
        proxy_pass http://mirrors.aliyun.com/epel/;
        proxy_set_header Host mirrors.aliyun.com;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

設定の検証とサービス再起動:

[root@proxy-server conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

[root@proxy-server conf.d]# systemctl restart nginx

2. クライアント側のYUM設定

リポジトリ定義ファイルのbaseurlをNginxサーバーのアドレスに置換する。

CentOS-Base.repoの設定

# /etc/yum.repos.d/CentOS-Base.repo

[base]
name=CentOS-$releasever - Base
failovermethod=priority
baseurl=http://mirror.local.net/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.local.net/centos/RPM-GPG-KEY-CentOS-7

[updates]
name=CentOS-$releasever - Updates
failovermethod=priority
baseurl=http://mirror.local.net/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.local.net/centos/RPM-GPG-KEY-CentOS-7

[extras]
name=CentOS-$releasever - Extras
failovermethod=priority
baseurl=http://mirror.local.net/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.local.net/centos/RPM-GPG-KEY-CentOS-7

[centosplus]
name=CentOS-$releasever - Plus
failovermethod=priority
baseurl=http://mirror.local.net/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.local.net/centos/RPM-GPG-KEY-CentOS-7

[contrib]
name=CentOS-$releasever - Contrib
failovermethod=priority
baseurl=http://mirror.local.net/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.local.net/centos/RPM-GPG-KEY-CentOS-7

epel.repoの設定

# /etc/yum.repos.d/epel.repo

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://mirror.local.net/epel/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=0

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
baseurl=http://mirror.local.net/epel/7/$basearch/debug
failovermethod=priority
enabled=0
gpgcheck=0

[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
baseurl=http://mirror.local.net/epel/7/SRPMS
failovermethod=priority
enabled=0
gpgcheck=0

3. hostsファイルの編集

クライアントのhostsファイルにNginxサーバーのIPアドレスとホスト名をマッピングする:

[root@client-host ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.10 mirror.local.net

※192.168.100.10はNginxプロキシサーバーのIPアドレス

4. 動作確認

# ネットワーク接続テスト
[root@client-host ~]# ping -c 3 mirror.local.net

# YUMキャッシュの生成
[root@client-host ~]# yum makecache

# リポジトリ一覧の確認
[root@client-host ~]# yum repolist

yum makecacheが正常に完了すれば、Nginx逆プロキシを経由したYUMアクセスが機能している。

タグ: nginx reverse-proxy Yum CentOS linux

7月3日 20:35 投稿