Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,占有内存少,并发能力强,能接受高负载。
用户无法访问某网站,但是可以访问代理服务器,代理服务器可以访问目标网站,用户配置代理服务器让 代理服务器对目标网站进行访问,并把结果返回给用户 (老打工人了)
用户访问代理服务器,代理服务器去访问目标资源,处理返回结果给用户,从外部看用户不知道是否有代理服务器以为是一个服务器,暴漏的是代理服务器,隐藏了访问的资源服务器
负载均衡(Load Balance),意思是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。是解决高性能,单点故障(高可用),扩展性(水平伸缩)的终极解决方案。
有专门的服务器放静态资源。用户请求静态资源时nginx就去静态资源服务器查找。加快了网站的解析速度,降低单个服务器的压力
1、下载nginx2、解压nginx3、$sudo apt-get install libpcre3 libpcre3-dev zlib1g-dev //安装依赖库4、./configure5、make && make install //编译并且安装*安装成功后 usr/local 会多出一个nginx文件 nginx里有sbin,sbin里面有启动脚本相关命令: ps -e | grep nginx //查看是否启动nginx netstat -ltunp //查看占用的端口号等详细信息----防火墙默认无法访问,添加规则开放端口即可
1、下载nginx
2、解压nginx
3、$sudo apt-get install libpcre3 libpcre3-dev zlib1g-dev //安装依赖库
4、./configure
5、make && make install //编译并且安装
*安装成功后 usr/local 会多出一个nginx文件 nginx里有sbin,sbin里面有启动脚本
相关命令:
ps -e | grep nginx //查看是否启动nginx
netstat -ltunp //查看占用的端口号等详细信息
----防火墙默认无法访问,添加规则开放端口即可
*使用ngin常用密令要在 /usr/local/nginx/sbin 中使用 ./nginx -v //查看nginx版本号 ./nginx //启动 ./nginx -s stop //关闭 ./nginx -s reload //重新加载(比如conf的配置文件)
*使用ngin常用密令要在 /usr/local/nginx/sbin 中使用
./nginx -v //查看nginx版本号
./nginx //启动
./nginx -s stop //关闭
./nginx -s reload //重新加载(比如conf的配置文件)
*nginx配置文件在 /usr/local/nginx/conf 中 nginx配置文件分为三块 1、全局块 全局开始到events结束为全局快,主要设置一些影响nginx服务器整体运行的配置指令 例:worker_processes 1; 是 nginx处理并发的数量,值越大处理的并发也越多(会受到硬件影响) 2、events块 影响nginx服务器与用户的网络连接 例:worker_connections 1024; 表示nginx用户最大连接数量 3、http块 又包括 http全局块 和 server块 是配置最频繁的部分(高可用,负载均衡,动静分离都要在这配置)可以嵌套多个 server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使 用sendfile传输文件,连接超时时间,单连接请求数等。 server全局块:配置虚拟主机的相关参数,一个http中可以有多个server。 location块:配置请求的路由,以及各种页面的处理情况。
*nginx配置文件在 /usr/local/nginx/conf 中 nginx配置文件分为三块
1、全局块
全局开始到events结束为全局快,主要设置一些影响nginx服务器整体运行的配置指令 例:worker_processes 1; 是
nginx处理并发的数量,值越大处理的并发也越多(会受到硬件影响)
2、events块
影响nginx服务器与用户的网络连接 例:worker_connections 1024; 表示nginx用户最大连接数量
3、http块
又包括 http全局块 和 server块 是配置最频繁的部分(高可用,负载均衡,动静分离都要在这配置)可以嵌套多个
server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使
用sendfile传输文件,连接超时时间,单连接请求数等。
server全局块:配置虚拟主机的相关参数,一个http中可以有多个server。
location块:配置请求的路由,以及各种页面的处理情况。
实例一、反向代理 1、修改配置文件 server { listen 80; server_name localhost //nginx地址; location / { root html; //添加proxy_pass +http://项目地址 proxy_pass http://localhost:428; index index.html index.htm; } } 实例二、反向代理(根据访问路径跳转不同端口) 1、部署两个tomcat,tom1的dev放a.html,tom2的vod放b.html,并开放端口 2、修改配置文件 server { listen 80; server_name localhost //nginx地址; location ~ /edu/ { proxy_pass http://localhost:8080 } location ~ /vod/ { proxy_pass http://localhost:8081 } }location使用正则表达式location = /uri =开头表示精确前缀匹配,只有完全匹配才能生效。location ^~ /uri ^~开头表示普通字符串匹配上以后不再进行正则匹配。location ~ pattern ~开头表示区分大小写的正则匹配。location ~* pattern ~*开头表示不区分大小写的正则匹配。location /uri 不带任何修饰符,表示前缀匹配。location / 通用匹配,任何未匹配到其他location的请求都会匹配到。注意:正则匹配会根据匹配顺序,找到第一个匹配的正则表达式后将停止搜索。普通字符串匹配则无视顺序,只会选择最精确的匹配。
实例一、反向代理
1、修改配置文件
server {
listen 80;
server_name localhost //nginx地址;
location / {
root html;
//添加proxy_pass +http://项目地址
proxy_pass http://localhost:428;
index index.html index.htm;
}
实例二、反向代理(根据访问路径跳转不同端口)
1、部署两个tomcat,tom1的dev放a.html,tom2的vod放b.html,并开放端口
2、修改配置文件
location ~ /edu/ {
proxy_pass http://localhost:8080
location ~ /vod/ {
proxy_pass http://localhost:8081
location使用正则表达式
location = /uri =开头表示精确前缀匹配,只有完全匹配才能生效。
location ^~ /uri ^~开头表示普通字符串匹配上以后不再进行正则匹配。
location ~ pattern ~开头表示区分大小写的正则匹配。
location ~* pattern ~*开头表示不区分大小写的正则匹配。
location /uri 不带任何修饰符,表示前缀匹配。
location / 通用匹配,任何未匹配到其他location的请求都会匹配到。
注意:
正则匹配会根据匹配顺序,找到第一个匹配的正则表达式后将停止搜索。普通字符串匹配则无视顺序,只会选择最精确的匹配。
1、修改文件 http下添加: upstream 服务名字{ server 192.168.1.1:8080; server 192.169.1.1:8080; } 配置server { listen 80; server_name 192.168.1.1 //nginx地址; location / { proxy_pass http://服务名字; } }2、负载均衡策略 ·轮询(默认) 按照时间顺序进行分配,服务器宕机自动剔除。 ·weight 默认为1,权重越高被分配的客户端越多,就是按比例分配 例: upstream 服务名字{ server 192.168.1.1:8080 weight=5; server 192.169.1.1:8080 weight=10; } ·ip_hash 大白话就是,按照你的ip地址来,你的ip分到服务器1以后你访问都是服务器1可解决session问题 例: upstream 服务名字{ ip_hash server 192.168.1.1:8080; server 192.169.1.1:8080; } ·fair(第三方)按照后端访问时间,那个服务器相应快那个先给用户访问 例: upstream 服务名字{ server 192.168.1.1:8080; server 192.169.1.1:8080; fair }
1、修改文件
http下添加:
upstream 服务名字{
server 192.168.1.1:8080;
server 192.169.1.1:8080;
配置server {
server_name 192.168.1.1 //nginx地址;
proxy_pass http://服务名字;
2、负载均衡策略
·轮询(默认)
按照时间顺序进行分配,服务器宕机自动剔除。
·weight
默认为1,权重越高被分配的客户端越多,就是按比例分配
例:
server 192.168.1.1:8080 weight=5;
server 192.169.1.1:8080 weight=10;
·ip_hash
大白话就是,按照你的ip地址来,你的ip分到服务器1以后你访问都是服务器1可解决session问题
ip_hash
·fair(第三方)按照后端访问时间,那个服务器相应快那个先给用户访问
fair
*常用方式单独域名存放静态资源。 location /www/ { root /data/; } location /image/ { root /data/; autoindex on; //显示文件列表 }
*常用方式单独域名存放静态资源。
location /www/ {
root /data/;
location /image/ {
autoindex on; //显示文件列表
((主从模式))解决nginx宕机就是高可用。。。。需要2台nginx服务器需要keeplived需要虚拟ip地址
1、两台服务器都装上nginx服务器2、两台服务器安装keeplived 安装后 etc 下会生成keeplived目录,里面包含keeplived配置文件keeplived.conf 配置keeplived,并且配置脚本 3、然后就高可用了
1、两台服务器都装上nginx服务器
2、两台服务器安装keeplived
安装后 etc 下会生成keeplived目录,里面包含keeplived配置文件keeplived.conf
配置keeplived,并且配置脚本
3、然后就高可用了
原文链接:http://www.cnblogs.com/pkkyh/p/14631347.html
本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728