Nginx反向代理
1.代理
正向代理:网络代理(代理客户端访问外网)
反向代理:用于公司集群架构,代理服务端
2.正向代理与反向代理的区别
1.形式上的服务“对象”不一样
2.正向代理的对象是客户端,为客户端服务
3.反向代理的对象是服务端,为服务端服务
3.代理的作用
1.可以代理后端语言的服务(PHP,Python)
2.国外服务器代理国内服务器,方便国外用户上网
4.反向代理常用模块
反向代理模式 |
nginx配置模块 |
http、websocket、https |
ngx_http_proxy_module |
fastcgi |
ngx_http_fastcgi_module |
uwsgi |
ngx_http_uwsgi_module |
grpc |
ngx_http_v2_module |
Nginx反向代理配置
环境准备
主机名 |
WanIP |
LanIP |
角色 |
应用 |
web01 |
10.0.0.7 |
172.16.1.7 |
web网站 |
nginx、php、wordpress |
lb01 |
10.0.0.5 |
172.16.1.5 |
反向代理服务器 |
nginx |
db01 |
10.0.0.51 |
182.16.1.51 |
数据库 |
MariaDB |
安装LNMP环境
1.先添加nginx和php的仓库
[root@web01 ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
[root@web01 ~]# vim /etc/yum.repos.d/php.repo
[php-webtatic]
name = PHP Repository
baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/
gpgcheck = 0
2.安装nginx和php
yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb nginx
3.修改nginx和php的配置文件使它们统一用户
[root@web01 ~]# vim /etc/nginx/nginx.conf
user www;
[root@web01 ~]# vim /etc/php-fpm.d/www.conf
user = www
group = www
4.创建www用户
useradd www -s /sbin/nologin -M
5.编辑nginx配置文件
[root@web01 ~]# vim /etc/nginx/conf.d/blog.jl.com.conf
server{
listen 80;
server_name blog.jl.com;
root /code/wordpress;
index index.php index.html;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
6.创建站点目录
[root@web01 ~]# mkdir /code
7.下载wordpress到站点目录中
[root@web01 /code]# wget https://cn.wordpress.org/latest-zh_CN.tar.gz
8.修改站点目录的属主
[root@web01 /code]# chown -R www:www /code
9.启动nginx和php并加入开机自启
[root@web01 /code]# systemctl start nginx php-fpm
[root@web01 /code]# systemctl enable nginx php-fpm
安装数据库(db01)
1.安装数据库
[root@db01 ~]# yum install -y mariadb-server
2.启动数据库
[root@db01 ~]# systemctl start mariadb
3.给数据库添加密码
[root@db01 ~]# mysqladmin -uroot -p password '123'
4.登录数据库
[root@db01 ~]# mysql -uroot -p123
5.创建wordpress表
MariaDB [(none)]> create database wordpress;
6.创建用户
MariaDB [(none)]> grant all on wordpress.* to wp_user@'172.16.1.%' identified by '123';
访问网站
1.在windows上解析域名
10.0.0.7 blog.jl.com
2.在浏览器访问域名
nginx做代理服务器(lb01)
1.安装nginx
[root@lb01 ~]# yum install -y nginx
2.编写nginx配置文件
[root@lb01 ~]# vim /etc/nginx/conf.d/blog.jl.com.conf
server{
listen 80;
server_name blog.jl.com;
location /{
proxy_pass http://172.16.1.7:80;
# 在代理服务器的请求头中,加上域名,携带域名去访问后端web01服务器
proxy_set_header Host $host;
# 在代理服务器的请求头中,透传用户的真实IP地址给web01
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 代理服务器连接后端服务的超时时间
proxy_connect_timeout 60s;
# 代理后端的服务器响应代理服务器的超时时间(代理服务器读取web01返回的数据超时时间)
proxy_read_timeout 60s;
# 后端服务器回传给代理服务器数据的超时时间
proxy_send_timeout 60s;
# 开启代理服务器的缓冲区,代理服务器接收到web01返回的数据,接收一条,返回给用户一条
proxy_buffering on;
# 开启存放头部信息的缓冲区大小
proxy_buffer_size 32k;
# 开启4个128k的存放数据主体的缓冲区
proxy_buffers 4 128k;
}
}
3.访问网站
4.在web01机器上查看日志