Nginx学习



代理

代理分为正向代理和反向代理。

正向代理

例如vpn,用户通过vpn代理,访问国外网站。正向代理服务器位于客户端和服务端之间,客户端为了向服务端获取数据,客户端先向代理服务器发送请求,并指定服务端地址,服务端地址返回数据给代理服务器,代理服务器将服务端返回的数据返回给客户端,我们需要在客户端配置代理信息。所以正向代理代理的是客户端。

反向代理

客户端对于反向代理是无感知的,客户端不需要配置任何东西,直接访问代理的地址,代理地址向服务器获取数据后直接返回给前端。反向代理代理的是服务端。
正向代理与反向代理的主要区别在于代理对象不同,正向代理代理的是客户端,反向代理代理的是服务端。

nginx反向代理

nginx常用命令

启动nginx: nginx
linux中后台启动nginx:nohup nginx & #这个命令要配合&使用
以特定目录下的配置文件启动:nginx -c /特定目录/nginx.conf
重新加载配置:nginx -s reload 执行这个命令后,master进程会等待worker进程处理完当前请求,然后根据最新配置重新创建新的worker进程,完成Nginx配置的热更新。
立即停止服务: nginx -s stop
从容停止服务: nginx -s quit 执行该命令后,Nginx在完成当前工作任务后再停止。
检查配置文件是否正确 : nginx -t
检查特定目录的配置文件是否正确: nginx -t -c /特定目录/nginx.conf
查看版本信息: nginx -v

配置文件

在nginx.conf中配置

 server {
     listen    80;
    server_name  www.hubcc.com;
     location /{
         proxy_pass http://127.0.0.1:8080;
         index  index.html index.htm index.jsp;
     }
 }

如上配置,启动nginx后,我们访问www.hubcc.com,nginx会跳转到http://127.0.0.1:8080路径上。
如果我们在location中配置名称。如下

 server {
     listen    80;
    server_name  www.hubcc.com;
     location /webapi{
         proxy_pass http://127.0.0.1:8080;
         index  index.html index.htm index.jsp;
     }
 }

那么我们需要访问www.hubcc.com/webapi才会访问到http://127.0.0.1:8080路径上。

nginx常用配置项

events:工作模式及连接数上限 例如

#epoll是多路复用IO(I/O Multiplexing)中的一种方式,
#仅用于linux2.6以上内核,可以大大提高nginx的性能
use   epoll; 
#单个后台worker process进程的最大并发链接数    
worker_connections  1024;

listen:配置监听端口。例如:

listen *:80 | *:8080 #监听所有80端口和8080端口
listen  IP_address:port   #监听指定的地址和端口号
listen  IP_address     #监听指定ip地址所有端口
listen port     #监听该端口的所有IP连接

server_name:虚拟主机的名称,也就是我们访问的主机名称,我们可以配置多个名称,用空格隔开。例如:

server_name	www.baishengxi.com

location:用于匹配的url,语法如下:

location [ = | ~ | ~* | ^~] url {

 }

1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
2、~:用于表示 uri 包含正则表达式,并且区分大小写。
3、~*:用于表示 uri 包含正则表达式,并且不区分大小写。
4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。
注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。

proxy_pass:被代理的服务器地址。例如:

proxy_pass	ocalhost:8080

index:设置默认首页。例如:

#多个页面用空格分割
index index.html index.jsp;

nginx负载均衡

nginx通过upstream模块定义的后端服务器中选取一台服务器接收用户的请求。upstream配置完成后要代理到指定服务器

#其他页面反向代理到tomcat容器
        location ~ .*$ {
            index index.jsp index.html;
            proxy_pass http://aaa;
        }

6种负载均衡策略:

1、轮询(默认方式)

此策略适合服务器配置相当,无状态且短平快的服务使用。

#动态服务器组
    upstream aaa{
        server localhost:8080;
        server localhost:8081; 
        server localhost:8082; 
        server localhost:8083;  
    }

2、weight权重方式

此策略比较适合服务器的硬件配置差别比较大的情况,此策略可以与least_conn和ip_hash结合使用。

#动态服务器组
    upstream aaa{
        server localhost:8080   weight=2;
        server localhost:8081;
        server localhost:8082   backup;
        server localhost:8083   max_fails=3 fail_timeout=20s;
    }

3、ip_hash

指定负载均衡器按照基于客户端IP的分配方式
保证每个用户始终访问的都是一个ip,可以确保session回话,解决session不能跨服务器问题,此策略适合有状态服务,比如session。

#动态服务器组
    upstream aaa{
        ip_hash;    #保证每个访客固定访问一个后端服务器
        server localhost:8080   weight=2;
        server localhost:8081;
        server localhost:8082;
        server localhost:8083   max_fails=3 fail_timeout=20s;
    }

4、least_conn

把请求转发给连接数较少的后端服务器,此负载均衡策略适合请求处理时间长短不一造成服务器过载的情况

  #动态服务器组
    upstream aaa{
        least_conn;    #把请求转发给连接数较少的后端服务器
        server localhost:8080   weight=2;  #tomcat 7.0
        server localhost:8081;  #tomcat 8.0
        server localhost:8082 backup;  #tomcat 8.5
        server localhost:8083   max_fails=3 fail_timeout=20s;  #tomcat 9.0
    }

5、第三方策略

1、fair:按照响应时间来分配

    #动态服务器组
    upstream aaa{
        server localhost:8080;
        server localhost:8081;
        server localhost:8082;
        server localhost:8083;
        fair;    #实现响应时间短的优先分配
    }

2、url_hash:按照访问url的hash来分配请求

#动态服务器组
    upstream aaa{
        hash $request_uri;    #实现每个url定向到同一个后端服务器
        server localhost:8080; 
        server localhost:8081; 
        server localhost:8082;
        server localhost:8083; 
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值