nginx基础

1、nginx简介

nginx是一款可靠、高性能的http服务器和反向代理服务器。支持热部署(更改配置无需重启,只需reload)、高并发。

2、nginx的安装

a、在/etc/apt/sources.list中添加nginx软件源 nginx软件源 deb http://extras.ubuntu.com/ubuntu codename main deb-src http://extras.ubuntu.com/ubuntu codename main deb http://nginx.org/packages/mainline/ubuntu/ codename nginx deb-src http://nginx.org/packages/ubuntu/ codename nginx

b、下载、导入 下载、导入Linux wget http://nginx.org/keys/nginx_signing.key sudo apt-key add nginx_signing.key

c、更新apt-get源 更新apt-get sudo apt-get update

d、安装nginx 安装nginx sudo apt-get install nginx

e、测试安装是否成功 浏览器中输入 测试 localhost 显示Welcome to nginx!页面,表面安装成功。

3、nginx命令

a、启动 sudo nginx -c /etc/nginx/nginx.conf

b、强制停止 nginx -s stop

c、从容停止,等所有请求结束后,关闭服务 nginx -s quit kill -QUIT nginx主进程id号

d、重新加载修改后的配置文件 nginx -s reload

e、ps -ef | grep nginx 获取当前正在运行的所有nginx进程 nginx有1个主进程master processor,管理worker进程。读取、解析配置文件,接收外界信号,向worker进程发送信号,监控worker进程的运行状态。 1个或多个工作进程 worker processor,主要处理请求,个数可以在nginx.conf中配置,通常为cpu核数。

4、nginx配置

a、全局属性/上下文 全局属性 user nobody; // nginx中worker进程所属用户,master进程总是属于root用户 error_log logs/error.log notice;//error日志地址 access_log log/nginx/access.log; worker_processes 1;//worker进程数,通常是CPU核数量

b、模块配置 模块 events – General connection processing http – HTTP traffic //http代理 mail – Mail traffic

c、配置例子 nginx.conf user www-data; events { # configuration of connection processing worker_connections 768;//单个worker进程的最大并发连接数 } # Configuration specific to HTTP and affecting all virtual servers http { server { # configuration of HTTP virtual server 1 location /one { # configuration for processing URIs start with '/one' } location /two { # configuration for processing URIs start with '/two' } } }

5、nginx的访问控制

需要安装nginx的ngx_http_access_module,allow 、deny命令,可用在http、server、location中。

nginx控制访问配置 location / { deny 192.168.1.1; allow 192.168.1.0/24; allow 10.1.1.0/16; allow 2001:0db8::/32; deny all; } 从上到下依次匹配,匹配到了就跳出

6、负载均衡

负载均衡,按照一定的方法,把请求分配到集群中不同的服务器上。这样可以承受更大的并发量、降低服务的延迟。

a、轮询(默认) 将请求按时间顺序依次分配到不同的服务器,自动剔除当掉的服务器

b、weight 指定轮询几率,weight和轮询几率成正比,用于后端服务器性能不均的情况 weight负载均衡 upstream bakend { server 192.168.159.10 weight=6; server 192.168.159.11 weight=4; } 注:1、2存在的问题,不能保证同一请求总是被分配到同一服务器,若用session保存数据,同一请求再次访问,被分配到不同服务器上,即使上次保存了用户信息,仍需重新登录。

c、ip_hash 根据请求ip的hash,决定访问的后端服务,这样每个请求访问固定的后端服务,可解决session问题 ip_hash负载均衡 upstream resinserver{ ip_hash; server 192.168.159.10:8080; server 192.168.159.11:8080; }

d、fair 按后端的响应时间分配请求,响应时间短的优先分配 fair负载均衡 upstream resinserver{ server server1; server server2; fair; }

e、url_hash 根据url的hash分配请求,使每个url访问固定的后端服务器,后端服务为缓存时比较有效。 url_hash upstream resinserver{ server squid1:3128; server squid2:3128; hash $request_uri;//指定为url_hash hash_method crc32;//指定使用的hash算法 }

f、定义负载均衡设备的Ip及设备状态 负载均衡配置 upstream resinserver{ ip_hash; server 127.0.0.1:8000 down;//当前设备不参与负载 server 127.0.0.1:8080 weight=2;//weight默认为1,weight越大权重越大 server 127.0.0.1:6801; server 127.0.0.1:6802 backup;//其他所有非backup机器忙或down时,请求此backup机器,压力最小 }

g、负载均衡的通用配置 负载均衡通用设置 http { upstream cluster { server srv1; server srv2; server srv3; } server { listen 80; server_name : "request_server"; location / { proxy_pass http://cluster; } } }

9、nginx的应用

a、反向代理 nginx通过proxy_pass把请求转发到被代理服务器上,对于客户端来说,nginx虚拟主机就是服务器,但是nginx虚拟机上没有相关数据,即使攻击nginx虚拟机,也不会对真正的服务器造成影响,保证安全性。 代理缓存:nginx虚拟主机在将proxied server的response返回客户端的同时,也会存储一份,这样当同样的请求信息再次来时,直接将缓存的response返回到客户端。减轻web服务器压力,提高响应速度。 反向代理 location { proxy_pass 被代理服务地址 } 多域名跳转 假设某网站有两个域名www.fjp.com和www.gxl.com,实现用户通过域名www.fjp.com请求访问时,通过nginx代理到192.168.66.90的8080端口下web目录,管理员访问www.fjp.com/admin时代理到192.168.66.90的8080端口下admin目录,当用户访问www.gxl.com,代理到192.168.66.90的8080端口下wap目录。 多域名跳转 server{ server_name www.fjp.com location / { proxy_pass http:192.168.66.90:8080/web/; } location /admin { proxy_pass http:192.168.66.90:8080/admin; } } server{ server_name www.gxl.com location / { proxy_pass http:192.168.66.90:8080/wap/; } } nginx重定向,新旧域名过渡 需求:访问www.fjp.com的请求,自动跳转到www.gxl.com 重定向 server { server_name www.fjp.com; rewrite ^/(.*)$ http://www.gxl.com/$1 permanent; } server { listen 80; server_name www.gxl.com; }

b、web服务 nginx本身是静态资源服务器,当只有静态资源时,可以使用nginx作为服务器,当然也可以实现动静分离 静态资源服务器 root 可以添加到http、server、location内,把请求URI追加到root指定的路径下,查找请求资源 静态资源 server{ location / { root /home/nuknaiq/data/www; } location ~ .(gif|jpg|png) { root /home/nuknaiq/dataimages;//接收URI以/images开头的请求,如/images/1.JPG,将转到root——即/data/images/1.JPG中去找 } } 动静分离服务器 动静分离就是将动态网站中不变的资源和经常变动的资源分开来,动静资源拆分完,就把静态资源做缓存, 动静分离 upstream test{ server localhost:8080; server localhost:8081; } server { listen 80; server_name localhost; location / { root e:wwwroot; index index.html; } # 所有静态请求都由nginx处理,存放目录为html location ~ .(gif|jpg|jpeg|png|bmp|swf|css|js)$ { root e:wwwroot; } # 所有动态请求都转发给tomcat处理 location ~ .(jsp|do)$ { proxy_pass http://test; //将代理的请求转到被代理地址上 } }

原文地址:https://www.cnblogs.com/canda/p/7835779.html