Nginx学习笔记

一、Nginx是什么

nginx是用来反向代理的,具体的百度。正向代理:代理用户去访问一些本来访问不到的网站,比如说vpn。反向代理:代理网站,用户直接访问它就可以了,它帮你去访问你想要访问的网站。

二、 Nginx安装以及常见操作

2.1 安装前环境准备,安装相关需要用到的库

命令:

yum install gcc openssl openssl-devel pcre pcre-devel zlib zlib-devel -y

2.2安装nginx

- 解压下载的安装包:tar -zxvf nginx-1.14.2.tar.gz
- 切换至解压后的nginx主目录:cd nginx-1.14.2
- 指定安装后的路径:./configure --prefix=/usr/local/nginx
- 开始编译:make
- 开始安装:make install

2.3nignx的启动

- 普通启动:./nginx
- 使用配置文件启动:./nginx -c /usr/local/nginx/conf/nginx.conf(ps:配置文件路径必须使用绝对路径)
- 测试启动,用来测试配置文件是否正确:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -t
- 查看是否启动成功:ps -ef | grep nginx
- 优雅的关闭nginx:kill -QUIT 主pid
- 快速关闭nginx:kill -TERM 主pid或者 kill -9 主id
- 重启nginx: ./nginx -s reload

三、Nginx作用

3.1nign静态网站部署

  • 修改nginx.conf文件,添加location匹配字段。如下代码示例
    server {  
        listen 80; #端口号  
        location /ace {  
            root /opt/static; #静态文件路径
        }  
    }
    
  • location匹配顺序(精确匹配)> (最长字符串匹配,但完全匹配) >(非正则匹配)>(正则匹配)>(最长字符串匹配,不完全匹配)>(location通配)

3.2负载均衡

  • 在http模块加上upstream配置
    upstream www.myweb.com { 
         	server  127.0.0.1:9100 weight=3; 
          	server  127.0.0.1:9200 weight=1;  
    } 
    
  • 在server模块里添加location,并配置proxy_pass,其中 www.myweb.com 字符串要和 upstream 后面的字符串相等
    location /myweb {
    	proxy_pass http://www.myweb.com;
    }
    

3.3负载均衡策略

  • 轮询(默认)

    注意:这里的轮询并不是每个请求轮流分配到不同的后端服务器,与ip_hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要应用于后端服务器为缓存时的场景下。如果后端服务器down掉,将自动剔除

  • 权重

每个请求按一定比例分发到不同的后端服务器,weight值越大访问的比例越大,用于后端服务器性能不均的情况

        	upstream backserver { 
            	server 192.168.0.14 weight=5; 
            	server 192.168.0.15 weight=2; 
        } 
  • ip_hash

ip_hash也叫IP绑定,每个请求按访问ip的hash值分配,这样每个访问客户端会固定访问一个后端服务器,可以解决会话Session丢失的问题
算法:hash(“124.207.55.82”) % 2 = 0, 1

       upstream backserver { 
           	ip_hash; 
           	server 127.0.0.1:8080; 
           	server 127.0.0.1:9090; 
       }
  • 最少连接

web请求会被转发到连接数最少的服务器上

       	upstream backserver { 
           	least_conn;
           	server 127.0.0.1:8080; 
           	server 127.0.0.1:9090; 
       }

3.4负载均衡其他几个配置

    配置1:
    upstream backserver { 
        	server 127.0.0.1:9100;
    		#其它所有的非backup机器down的时候,才请求backup机器
        	server 127.0.0.1:9200 backup; 
    } 
    配置2:
    	upstream backserver { 
    server 127.0.0.1:9100;
    #down表示当前的server是down状态,不参与负载均衡
        server 127.0.0.1:9200 down; 
    } 

四、静态代理

把所有静态资源的访问改为访问nginx,而不是访问tomcat,这种方式叫静态代理。因为nginx更擅长于静态资源的处理,性能更好,效率更高。所以在实际应用中,我们将静态资源比如图片、css、html、js等交给nginx处理,而不是由tomcat处理。

  • 在nginx.conf的location中配置静态资源的后缀
    例如:当访问静态资源,则从linux服务器/opt/static目录下获取(举例)
        location ~ .*\.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid
        |doc|ppt|pdf|xls|mp3|wma)$ {
            	root /opt/static;
        }
        ~ 表示正则匹配,也就是说后面的内容可以是正则表达式匹配
        第一个点 . 表示任意字符
        *表示一个或多个字符
        \. 是转移字符,是后面这个点的转移字符
        | 表示或者
        $ 表示结尾

Ps: 整个配置表示以 .后面括号里面的这些后缀结尾的文件都由nginx处理放置静态资源的目录,要注意一下目录权限问题,如果权限不足,给目录赋予权限; 否则会出现403错误 chmod 755

  • 在nginx.conf的location中配置静态资源所在目录实现
        例如:当访问静态资源,则从linux服务器/opt/static目录下获取(举例)
        location ~ .*/(css|js|img|images) {
            	root   /opt/static;
        }
        xxx/css
        xxx/js
        xxx/img
        xxx/images
        我们将静态资源放入 /opt/static 目录下,然后用户访问时由nginx返回这些静态资源

Ps:
我们拦截的目录为/images,
请求的图片目录是/image,这样拦截不到;
但是反过来
我们拦截的目录为/imag
请求的图片目录为/image,这样可以拦截到
所有我们需要将location的/images修改为/image。所以一般我们用方式一,匹配静态资源后缀的方式更好一下,防止js拦截jsp目录。

  • 动静分离

    Nginx的负载均衡和静态代理结合在一起,我们可以实现动静分离,这是实际应用中常见的一种场景。
    动态资源,如jsp由tomcat或其他web服务器完成
    静态资源,如图片、css、js等由nginx服务器完成
    它们各司其职,专注于做自己擅长的事情
    动静分离充分利用了它们各自的优势,从而达到更高效合理的架构

  • 虚拟主机

    虚拟主机,就是把一台物理服务器划分成多个“虚拟”的服务器,这样我们的一台物理服务器就可以当做多个服务器来使用,从而可以配置多个网站。
    Nginx提供虚拟主机的功能,就是为了让我们不需要安装多个Nginx,就可以运行多个域名不同的网站。
    Nginx下,一个server标签就是一个虚拟主机。nginx的虚拟主机就是通过nginx.conf中server节点指定的,想要设置多个虚拟主机,配置多个server节点即可;

    • 基于端口的虚拟主机
      server {
          listen 8080;
          		server_name www.myweb.com;
          		location /myweb {
                  	proxy_pass http://www.myweb.com;
          		}
      }
      		server {
          		listen 9090;
          		server_name www.myweb.com;
          		location /p2p {
                 		proxy_pass http://www.myweb.com;
          		}
      }
      
    • 基于域名的虚拟主机
      	server {
              listen       80;
              server_name  www.myweb.com;
              location /myweb {
                 proxy_pass http://www. myweb.com;
              }
      }
      	server {
              listen       80;
              server_name  www.p2p.com;
              location /myweb {
                 proxy_pass http://www.p2p.com;
              }
      }
      
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值