LoginSignup
5
9

More than 5 years have passed since last update.

nginxでリバースプロキシ

Last updated at Posted at 2016-11-26
■初めに

 Nginxを使用してサブディレクトリでHTTPにアクセスさせる内容になります。

■目標

 Server1に搭載したJenkinsをClient-linからのアクセスで確認できるようにすること!

■環境
項目 Server1 Client-lin
OS RHEL7 RHEL7
SW Ansible 2.2
jenkins 2.33
nginx 1.11.6
IP XX.XX.XX.168 XX.XX.XX.244
■構成とやること

 下記の構成のようにServer1にJenkinsを搭載します。するとJenkinsへのアクセスは下図の①のようになりますがClient-lin側にnginxを搭載しJenkinsへのアクセスを下図②のようにします。

01_A.png

■補足
 Server1とClient-linとかなんなのって人は以下のリンクを見てください
  ・JenkinsからAnsibleを実行(1/2)
   http://qiita.com/yo_dazy/items/08ed86f53e3233fe14bb

では作業開始


まずは確認ってことでJenkinsが「server1(xx.xx.xx.168)」と「Client-lin(xx.xx.xx.244)」のどちらに入っているか確認します。

まずは「Client-lin(xx.xx.xx.244)」から・・・

client-lin_JenkinsCheck
[root@client-lin /]# hostname
client-lin
[root@client-lin /]#
[root@client-lin /]#
[root@client-lin /]# rpm -qa | grep jenkins
[root@client-lin /]#
[root@client-lin /]#

うん。入っていません。続いて「server1(xx.xx.xx.168)」。。。

server1_JenkinsCheck
[root@server1 ~]#
[root@server1 ~]# hostname
server1.us-west-2.compute.internal
[root@server1 ~]#
[root@server1 ~]#
[root@server1 ~]# rpm -qa | grep jenkins
jenkins-2.33-1.1.noarch
[root@server1 ~]#

入っています。念のためアクセスできるかも確認。
URL:http://XX.XX.XX.168:8080

02A.png

OK!!Jenkinsは「Server1(XX.XX.XX.168)」の方にインストールされていてアクセスが可能であることがわかりました。
ではこれより、上記の構成通り[http://xx.xx.xx.244/jenkins]のアクセスを可能にします!!


■Nginx構築

作業対象 : Client-lin(XX.XX.XX.244)
 前提:サーバログイン[Client-lin(XX.XX.XX.244)]にrootログイン
※Client-linとかRootログインとかわからないって人は前回のqiitaを見てね!

1)リポジトリ登録

コマンド : vi /etc/yum.repos.d/nginx.repo
nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/rhel/7/$basearch/
gpgcheck=0
enabled=1

2)nginx インストール

コマンド : yum -y install nginx
[root@client-lin yum.repos.d]# yum -y install nginx
<略>
Installed:
  nginx.x86_64 1:1.11.6-1.el7.ngx

Complete!
[root@client-lin yum.repos.d]# 
[root@client-lin yum.repos.d]# nginx -V
nginx version: nginx/1.11.6
<略>

3)サービス設定

コマンド : systemctl enable nginx
コマンド : systemctl start nginx

インストール終了!!

4)確認
本当にインストールできているか確認する

パス:/usr/share/nginx/html/index.html
URL:http://XX.XX.XX.244/

03A.png

確認完了!


次は実際に「server1(XX.XX.XX.168)」に搭載しているJenkinsを「Client-lin(XX.XX.XX.244)」からアクセスできるようにします!!

目標 :
http://XX.XX.XX.168:8080のアクセスはできなくなりhttp://XX.XX.XX.244/jenkinsでのアクセスが可能になること

■Jenkins設定

作業対象 : server1(XX.XX.XX.168)

1)Jenkinsに対してサブディレクトリを指定

コマンド : vi /etc/sysconfig/jenkins
/etc/sysconfig/jenkins
(DEF)JENKINS_ARGS=""
(EDI)JENKINS_ARGS="--prefix=/jenkins"

2)サービス再起動

コマンド : systemctl restart jenkins
■nginx設定

作業対象 : Client-lin(XX.XX.XX.244)

nginxのConfigを修正しバーチャルホストを設定する

1)Selinux httpd_can_network_connect の設定変更
これをやらないと起動時にPermisionErrorが出る

コマンド : setsebool httpd_can_network_connect on -P

2)Config修正
基本的にはdefault.confはバックアップを取り[base.conf]等に変更してから編集するみたいですが「default.conf」に直接書き込んでもできます!

コマンド : vi /etc/nginx/conf.d/default.conf
/etc/nginx/conf.d/default.conf
error_page   500 502 503 504  /50x.html;
location = /50x.html {
     root   /usr/share/nginx/html;
}
# 以下追加
# Jenkins
    location ~ /jenkins {
        proxy_read_timeout      300;
        proxy_connect_timeout   300;
        proxy_redirect          off;

        proxy_set_header        X-Forwarded-Proto       $scheme;
        proxy_set_header        Host                    $http_host;
        proxy_set_header        Host                    $host;
        proxy_set_header        X-Real-IP               $remote_addr;
        proxy_set_header        X-Forwarded-For         $proxy_add_x_forwarded_for;

        proxy_pass              http://jenkins_server;

        access_log              /var/log/nginx/jenkins_access.log;
        error_log               /var/log/nginx/jenkins_error.log;
    }

3)バーチャルホスト作成
デフォルトでは存在しないので作成になります。またPublicIPが変更されるたびにここも書き換えないとたぶん動かない。(テストだから仕方なし!!)

コマンド : vi /etc/nginx/conf.d/jenkins.conf
/etc/nginx/conf.d/jenkins.conf
upstream jenkins_server {
 server <server1PublicIP>:8080;
}

4)サービス再起動

コマンド : systemctl restart nginx

5)確認
まずは先ほど確認した。Server1にアクセスして確認します
URL:http://xx.xx.xx.168:8080

04.png

はい!見えません!
Jenkinsの設定により変更されました!

つぎは変更したClient-linで確認してみます
URL:http://xx.xx.xx.244/jenkins

05.png

問題なく表示されました!


■まとめ

意外と簡単だった!!最後ちょっとはまったくらいでした。。。(^^)

5
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
9