雲服務器上部署的應用多了開放的端口也多, 出於安全性考慮, 關閉服務器8080端口
修改Jenkins訪問方式, 通過Nginx反向代理通過80端口訪問Jenkins
修改nginx 的配置文件
sudo vim /etc/nginx/sites-available/mysite.conf
修改結果
upstream jenkins_server {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name www.sitven.cn; # 名稱
charset utf-8; # 格式
client_max_body_size 75M;
location /jenkins/ { # jenkins訪問路徑
proxy_http_version 1.1; ## For websocket
proxy_set_header Upgrade $http_upgrade; ## For websocket
proxy_set_header Connection "upgrade"; ## For websocket
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_pass http://jenkins_server;
}
}
其他配置不修改,繼續沿用博客項目的配置
注:nginx實現反向代理的需求而增加了ngx_http_proxy_module
模塊, 其中proxy_set_header
指令就是該模塊需要讀取的配置文件
Host的含義是表明請求的主機名,因爲nginx作爲反向代理使用,而如果後端真是的服務器設置有類似防盜鏈或者根據http請求頭中的host字段來進行路由或判斷功能的話,如果反向代理層的nginx不重寫請求頭中的host字段,將會導致請求失敗【默認反向代理服務器會向後端真實服務器發送請求,並且請求頭中的host字段應爲proxy_pass
指令設置的服務器】
X_Forward_For
字段表示該條http請求是有誰發起的?如果反向代理服務器不重寫該請求頭的話,那麼後端真實服務器在處理時會認爲所有的請求都來在反向代理服務器,如果後端有防攻擊策略的話,那麼機器就被封掉了。因此,在配置用作反向代理的Nginx中一般會增加兩條配置,修改http的請求頭:
proxy_set_header Host $http_host;
proxy_set_header X-Forward-For $remote_addr;
這裏的$http_host
和$remote_addr
都是Nginx的導出變量,可以再配置文件中直接使用。如果Host請求頭部沒有出現在請求頭中,則$http_host
值爲空,但是$host
值爲主域名。因此,一般而言,會用$host代替$http_host
變量,從而避免http請求中丟失Host頭部的情況下Host不被重寫的失誤
修改jenkins的配置文件
在ubuntu系統中,位於/etc/default/jenkins
在JENKINS_ARGS
中追加prefix
vim /etc/default/jenkins
# 追加
--prefix=/jenkins
# 追加結果
JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpPort=$HTTP_PORT --prefix=/jenkins"
檢驗Nginx配置文件是否正確
sudo nginx -t
重啓Nginx和Jenkins
sudo service nginx restart # 重啓Nginx
sudo service jenkins restart # 重啓Jenkins
訪問Jenkins
修改jenkins配置
修改Jenkins系統管理-系統設置-Jenkins Location-Jnekins URL,否則會提示反向代理配置錯誤
進入雲服務控制檯關閉8080端口的入站規則