相关概念
反向代理:在收到客户端请求之后,会修目标IP地址和端口
正向代理:在收到客户端请求之后,会修源IP地址和端口
上游服务器:代理服务器后端的哪些真正给客户端提供服务的节点,这样的服务器称之为上游服务器
下游服务器:客户端就是下游节点
模块:nginx_http_proxy_module
指令:
proxy_pass:指定上游服务器的ip和端口
proxy_set_header:指定在重新封装请求报文的时候,添加一个新的首部
部署步骤
1、检查环境
getenforce #查看selinux运行状态 setenforce 0 #临时关闭selinuxselinux 开机不自启的配置如下: 执行:vi /etc/selinux/config将SELINUX=xxxx 修改为SELINUX=disabled systemctl status firewalld #检查firewalld是否启动,未启动需执行:systemctl start firewalld;已启动请忽略 systemctl enable firewalld #做开机启动2、安装服务
yum -y install nginx httpd php #安装nginx httpd php三个服务3、配置httpd端口
vim /etc/httpd/conf/httpd.conf ########### Listen 85 #默认80,这里为了不和nginx冲突,需另起一个 ###########4、启动httpd
systemctl start httpd systemctl enable httpd netstat -anp|grep httpd5、修改Nginx配置文件
vim /etc/nginx/nginx.conf ######## 删除默认的80端口server#切记最后需要加一个}。 ############### cd /etc/nginx/conf.d vim pass.conf #新建并编辑一个conf文件 ########### server { listen80; location / { proxy_pass :85; } } ###########6、启动nginx
nginx –t #必要步骤,错误检验,无问题可做下一步 systemctl restart nginx #重启nginx systemctl enable nginx #设置nginx开机自启动 netstat -anp|grep nginx #查看nginx端口是否存活 firewall-cmd --add-port=80/tcp #防火墙开放80端口 firewall-cmd --add-port=80/tcp --permanent #设置防火墙上开放的80端口永久生效7、浏览器验证
IP:808、验证php
echo "<?php phpinfo(); ?>" > /var/www/html/index.php #比较简单的测试页输入9、浏览器验证
IP:端口10、配置nginx网站
mkdir /nginx #新建目录 echo "奔跑的乌拉拉" > /nginx/index.html #输入一个htmlvim /etc/nginx/conf.d/pass.conf ################### server { listen80; location ~* \.php$ { #注意这里的改变 proxy_pass :85; } location / { root /nginx; } } ################11、重启nginx
nginx –t #必要步骤,错误检验 systemctl restart nginx #重启nginx服务12、浏览器验证
IP/index.html IP/index.php最后补充
补充一:
location如下:
location /admin { proxy_pass ; proxy_pass ; }请求的url 是http://www.test.com/admin/a.html
如果代理方式是 proxy_pass http://www.test.com/; 那么去http://www.test.com的根目录下找a.html,/代表完全代理。
如果代理方式是 proxy_pass http://www.test.com; 那么去http://www.test.com的根目录下的admin找a.html
补充二:
如果location中使用了模式匹配(正则),那么,location中的url会直接补充到代理节点的后面.
此时,上游服务器的的后面不能有任何内容,包括 /
location ~ \.php$ { proxy_pass ; [正则表达式proxy_pass转发的地址后面什么都不能加] <<< 正确写法 proxy_pass :80; <<< 正确写法 proxy_pass ; <<< 错误写法 proxy_pass img;<<< 错误写法 }此时,如果请求的url是 http://www.baidu.com/book/stu/a.php ,就会代理成 http://www.test.com/book/stu/a.php
补充三:
在location中如果有重定向的话,那么就用重定向后的uri替换掉代理节点中的uri
location / { rewrite /(.*)$ /index.php?name=$1 break; proxy_pass :80/img; }此时,如果请求的url是 http://www.test.com/bajie ,就会代理成 http://www.baidu.com/index.php?name=bajie
知道更多,请关注:Linux学习的那些事儿,带你了解更多知识哦~