使用nginx做反向代理
首先
以下是使用Nginx允许在子目录中访问HTTP的内容。
■目标
■ 着眼点
确保可以通过Client-lin访问Server1上安装的Jenkins!
■环境
环境
jenkins 2.33nginx 1.11.6IPXX.XX.XX.168XX.XX.XX.244
■ 组成和要做的事情 hé zuò de
将Jenkins安装在Server1上,按照下图的构建方式。这样,访问Jenkins将按照图中的①连接方式进行。同时,在Client-lin端安装nginx来实现访问Jenkins的方式如下图的②。
如果对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)”的…
[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)」。。。
[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 ~]#
请进入。为了确认一下,可以尝试访问一下。
链接:http://XX.XX.XX.168:8080
好的!!我们确认 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]
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
安装完成!
确保
确认一下是否真的已经成功安装了。
パス:/usr/share/nginx/html/index.html
URL:http://XX.XX.XX.244/
确认完成了!
接下来,我们要确保 「Client-lin(XX.XX.XX.244)」 可以从服务器 「server1(XX.XX.XX.168)」 上访问 Jenkins。
目标:
无法访问http://XX.XX.XX.168:8080,而可以访问http://XX.XX.XX.244/jenkins。
■Jenkins的设置
目标服务器:server1(XX.XX.XX.168)
1)指定 Jenkins 的子目录
コマンド : vi /etc/sysconfig/jenkins
(DEF)JENKINS_ARGS=""
(EDI)JENKINS_ARGS="--prefix=/jenkins"
2)重新启动服务
コマンド : systemctl restart jenkins
■Nginx配置
作业对象:客户端 – lin(XX.XX.XX.244)
修改nginx配置并设置虚拟主机。
要更改Selinux的httpd_can_network_connect设置,否则在启动时会出现PermissionError。
コマンド : setsebool httpd_can_network_connect on -P
2)配置文件修正
一般来说,可以先备份default.conf并将其更名为[base.conf]等再进行编辑,但也可以直接在”default.conf”中进行修改!
コマンド : vi /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)创建虚拟主机
默认情况下不存在,需要创建。另外,每当公共IP发生更改时,这里也需要手动更改,否则可能无法正常运行。(由于是测试,所以无可奈何!!)
コマンド : vi /etc/nginx/conf.d/jenkins.conf
upstream jenkins_server {
server <server1のPublicIP>:8080;
}
4)重新启动服务。
コマンド : systemctl restart nginx
5)确认
首先,我们确认过了。我们要访问Server1进行确认
URL:http://xx.xx.xx.168:8080
好的!我看不见!这是由于 Jenkins 的设置被修改了!
下一步我会在经过改变的client-lin上进行确认。
URL:http://xx.xx.xx.244/jenkins
问题没有任何困难地显示出来了!
■总结
出乎意料地很容易!!最后只是遇到了一点困难。。。(^^)