nginx反向代理
(正向代理):客户端访问服务端之间配置一个代理服务器,通过互联网的代理服务器访问目的服务器,再将数据返还给客户端
(反向代理):客户端对代理是无感知的,因为客户端只需要将请求发送到反向代理服务器中,再由反向代理
服务器对目标资源服务器进行请求数据,再返还给客户端,而客户端访问的始终是反向代理服务器
并不知道目标资源服务器的真是ip及其相关信息。隐藏了目标服务器的ip信息
nginx负载均衡
客户端发送多个请求到服务器,服务器处理请求,需要跟后端数据库进行交互,服务器处理完毕后,再将结果返回给客户端。
通过负载均衡能够提高并发数量,将客户端的请求分发到后端多个数据库上从而提高处理时间,从1对1,变成了1对多的关系
nginx动静分离
为了加快网站的解析速度,将动态网页和静态网页,分开放置不同服务器中,
html\css\js 统称问静态资源
php\jsp\servlet 统称动态资源
Linux 系统安装nginx
下载软件包
安装nginx相关依赖包
pcre openssl zlib
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all
nginx 常用命令
使用ngxin操作命令前提条件:必须进入nginx目录中去
/usr/local/nginx/sbin
命令:
查看nginx的版本号
./nginx -v
查看nginx 的编译参数
./nginx -V
启动nginx
./nginx
关闭nginx
./nginx -s stop
重新加载nginx
./nginx -s reload
nginx 配置文件
/usr/local/nginx/conf/nginx.conf
nginx配置文件 组成部分
1.全局块
从配置文件开始到events块之间的内容,主要会设置一些影响nginx运行的配置指令
主要包括配置运行nginx服务器的用户/组、允许生成worker process 数、进程PID存放路径、日志存放路径
和类型及配置文件的引入等。
worker_processes 1;
但是会受到硬件限制
2.events块
主要是影响nginx服务器与用户的网络链接
比如: worker_connections 1024;
3.http 块
这是nginx服务配置中最频繁的部分,代理、缓存和日志定义等大多数功能都是在这里配置
http块两部分组成
1.http全局块
全局块配置的指令包括文件引入、MIME-TYPE定义、日志定义、链接超时定义、单链接数请求上限等
2.server块
虚拟主机的主要配置在server块中配置
server块分两部分组成
1.全局server块
2.location 块
location 块中支持正则表达式
server块示例
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
nginx 反向代理配置实例
1.配置nginx反向代理实例1
1.实现效果:打开浏览器,在浏览器地址中输入www.123.com,跳转到后端服务器中Linux tomcat主页面中
2.具体实现
在Linux系统中安装tomcat,使用默认端口8080
需要jdk环境,若系统没有需要下载jdk包并解压,然后把java_home添加到环境变量
在nginx 中配置请求代理转发
location / {
root html;
proxy_pass http://192.168.127.137;
index index.html index.htm;
}
2.配置nginx反向代理实例2
1.实现规则判断当访问url 中出现某些字符如/edu/就跳转到某个ip上
修改配置文件中的,按下方示例
location ~ /edu/ {
root html;
proxy_pass http://192.168.127.136:8080;
index index.html index.htm;
}
location / {
root html;
proxy_pass http://192.168.127.137;
index index.html index.htm;
}
location 配置说明
= :用于不含正则表达式的url 前,要求请求字符与url严格匹配,如果匹配成功
,就停止继续向下搜索并立即处理该请求。
~ :用于表示url 包含正则表达式,并且区分大小写
~* :用于表示url包含正则表达式,并且不区分大小写
^~ :用于不包含正则表达式的url前,要求nginx服务器找到标识url请求字符匹配度最高
的location后,立即使用此location处理请求,而不再使用location中的正则url和请求字符串匹配
2.配置nginx负载均衡
负载均衡示例
实现效果:平均将客户端的访问分发到多台服务器上
做法:
在http块中添加upstream 模块 ,与server块一齐
upstream [name] {
ip_hash
server [后端服务器的ip];
server [后端服务器的ip];
server [后端服务器的ip];
server [后端服务器的ip];
fair;
}
location块中加上proxy_pass http://name;
nginx负载均衡策略
权重
轮询
ip_hash
ip会被分配到不同的服务器,同时也解决了session会话问题
fair
基本的负载均衡就做出来了
3.配置nginx动静分离
示例:url路径请求,通过不同的路径访问不同的资源
worker_processes 2;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name 192.168.127.141;
location /www/ {
root /data/;
index index.html index.htm;
}
location /imges/ {
root /data/;
index index.html index.htm;
autoindex on;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
nginx 高可用
基础配置需求
1.两台nginx服务器
2.需要在nginx服务器上安装keepalived
3.虚拟ip
keepalived 配置文件内容
如何使用nginx
基于centos 操作系统,从0开始构建一套nginx web服务器平台
两种部署方式
yum 二进制方式
自动解决依赖关系,自动安装软件,不能自定义参数
make 源码编译
部署方式复杂,不能自动检验,需要手工检验,可以自定义软件模块参数
安装步骤
解压缩包
tar -xzvf nginx
cd nginx
因为nginx是基于c语言开发的源代码软件程序,默认不能被Linux操作系统直接使用的
需要借助c编译器将源代码文件编译成二进制文件,所以需要执行源代码软件宝部署步骤
预编译
./configure --prefix=/usr/local/nginx --user=www --group=www
--with-http_stub_status_module
指定软件服务部署的路径,自定义软件服务特定的模块和功能,最终产生makefile文件
编译
make
makefile文件用途,主要是高职make编译工具,在编译源代码文件时候,从哪个源代码开始编译到哪里结束,以及记录编译时的依赖关系
安装
make install
源码包平滑降低nginx版本等级
重新编译旧版软件包
在预编译的时候参数必须与现有新版本的nginx预编译参数相同,具体操作看上方
kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
不要运行make install
/usr/local/nginx/sbin/nginx -v
/usr/local/nginx/sbin/nginx -V
扩展:
gzip
prce