Nginx反向代理

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机器上查看日志

posted on 2022-06-14 17:10  jilei  阅读(1961)  评论(0编辑  收藏  举报