Day 54 Nignx代理服務
1.1 Ansible劇本實現過程
1.1.1 基礎環境
倉庫 base epel nginx php mysql
軟件 rsync,nfs-utils,vim,tree,wget,iftop,iotop,sysstat,mailx
配置 /etc/rsync.pass[客戶端]
用戶 www uid=666 gid=666
目錄 /data /backup 權限 www
調整 firewalld selinux ssh 文件描述符
腳本 /server/scripts/
定時 全網備份的一個腳本
1.1.2 應用環境-nginx
1.安裝 nginx
2.配置 nginx.conf
3.配置 [將conf.d目錄直接推至對端]---> notify
4.啓動
5.handlers
6.代碼--->[wordpress|wecenter|edusoho]
7.授權
1.1.3 應用環境-php
1.安裝 php
2.配置 php-fpm.conf
3.配置 [php-fpm.d目錄直接推至對端]---> notify
4.配置 php.ini
5.啓動
6.handlers
7.代碼--->[wordpress|wecenter|edusoho]
8.授權
1.1.4 應用環境-mysql
1.安裝
2.配置 /etc/my.cnf
3.啓動
4.創建數據庫
5.授權[all 這是有問題的
1.1.5 應用環境-nfs
1.安裝
2.配置 /etc/exports
3.啓動
4.安裝sersync
5.配置conf.xml
6.啓動
1.1.6 應用環境-rsync
1.安裝
2.配置 /etc/rsyncd.conf
3.啓動
4.虛擬用戶->/etc/rsync.password
5.校驗腳本 --》/server/scripts/
6.增加配置 /etc/mail.rc
7.定時任務 每天早上凌晨5點執行校驗腳本
2.1 Nginx代理服務概述[flag]
正向代理:類似於×××功能[代理上網|×××]--> 網關指向代理服務器
反向代理:客戶端 -訪問-> 代理 --> web服務器
2.1.1 正向與反向代理的區別
區別在於代理的對象不一樣
正向代理代理的對象是客戶端
反向代理代理的對象是服務端
2.1.2 Nginx代理配置語法
推薦寫法
server{
listen 80;
server_name blog.oldboy.com;
location / {
proxy_pass http://172.16.1.7;
include proxy_params;
}
}
server{
listen 80;
server_name edu.oldboy.com;
location / {
proxy_pass http://172.16.1.7;
include proxy_params;
}
}
2.1.3 Nginx反向代理示例[flag]
角色 外網IP(NAT) 內網IP(LAN) 主機名
Proxy eth0:10.0.0.5 eth1:172.16.1.5 lb01
web01 eth0:10.0.0.7 eth1:172.16.1.7 web01
2.1.4 web01服務器:
配置一個網站,監聽在8080,僅運行172網段能訪問
[root@web01 ~]# cd /etc/nginx/conf.d/
[root@web01 conf.d]# vim web.conf
server {
listen 8080;
server_name 172.16.1.7;
location / {
root /code_8080;
index index.html;
deny 10.0.0.0/24;
allow all;
}
}
[root@web01 conf.d]# mkdir /code_8080
[root@web01 conf.d]# echo "web01-7...." >/code_8080/index.html
[root@web01 conf.d]# systemctl restart nginx
2.1.5 proxy代理服務器:
配置一個代理,監聽在80,讓10.0.0.1客戶端,能夠通過代理訪問到後端的 172.16.1.7這個網站
[root@lb01 ~]# cat /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
2.1.6 安裝
[root@lb01 ~]# yum install nginx -y
2.1.7 配置
[root@lb01 ~]# cd /etc/nginx/conf.d/
[root@lb01 conf.d]# rm -f default.conf
[root@lb01 conf.d]# cat proxy_web_node1.conf
server {
listen 80;
server_name nginx.oldboy.com;
location / {
proxy_pass http://172.16.1.7:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
[root@lb01 conf.d]# systemctl enable nginx
[root@lb01 conf.d]# systemctl start nginx
2.1.8 優化下proxy的配置
[root@lb01 conf.d]# cat /etc/nginx/proxy_params
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
######
[root@lb01 conf.d]# cat proxy_web_node1.conf
server {
listen 80;
server_name nginx.oldboy.com;
location / {
proxy_pass http://172.16.1.7:8080;
include proxy_params;
}
}
[root@lb01 conf.d]# systemctl restart nginx
2.1.9 配置hosts解析
proxy
10.0.0.5
172.16.1.5
web
172.16.1.7
如果出現故障
1.直接訪問web測試是否沒任何問題
2.檢查proxy代理服務器是否有問題[沒有攜帶頭部信息|proxy_pass 寫錯了]
代理缺點:
只能代理轉發一臺服務器
proxy web 172.16.1.7
blog.oldboy.com -》 blog.oldboy.com