nginx使用文档

nginx使用文档

说明:本文没有安装步骤,安装很简单。本文只说明配置内容

简介

1、nginx的作用

1)反向代理
2)负载均衡
3)动静分离

1.1 使用反向代理的目的

由于某种原因真实的服务器不能够被外部网络访问,想要访问就必须通过一台代理服务器。反向代理(ReverseProxy)就是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器。
使用反向代理:
防止主服务器被恶意攻击;
为负载均衡和动静分离提供实现支持;

配置实战

1、配置简介
配置文件nginx.conf
下面展示一些 内联代码片

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
	
    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

第一部分:全局配置
从配置文件开始到 events 块之间的内容,主要会设置一些影响 nginx 服务器整体运行的配置指令,主要包括配
置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以
及配置文件的引入等。
例:

worker_processes  1;

worker_processes 值越大,可以支持的并发处理量也越多;

第二部分events
例:

events {
    worker_connections  1024;
}

events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process
下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word
process 可以同时支持的最大连接数等。
上述例子就表示每个 work process 支持的最大连接数为 1024.

第三部分http

http {
   include       mime.types;
   default_type  application/octet-stream;
   sendfile        on;
   keepalive_timeout  65;
   
   server {
       listen       80;
       server_name  localhost;

       location / {
           root   html;
           index  index.html index.htm;
       }

       error_page   500 502 503 504  /50x.html;
       location = /50x.html {
           root   html;
       }
   }
}

http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。

包括的server块
这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。
1、全局 server 块
最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。
2、location 块
一个 server 块可以配置多个 location 块。这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

反向代理配置

1、通过nginx代理访问一台tomcat服务器
修改配置后需要重启nginx后生效
nginx.conf增加如下配置

    server {
        listen       80;
        server_name  www.nginxtest.com;

        location / {
            proxy_pass http://127.0.0.1:8080;
            index  index.html index.htm;
        }

    }

我们监听 80 端口,访问域名为 www.nginxtest.com,不加端口号时默认为 80 端口,故访问该域名时会跳转到 127.0.0.1:8080 路径上。在浏览器端输入 www.nginxtest.com(host文件中配置了此域名解析)

反向代理示例
实现效果:使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中nginx 监听端口为 9001,
访问 http://127.0.0.1:9001/edu/ 直接跳转到 127.0.0.1:8081
访问 http://127.0.0.1:9001/vod/ 直接跳转到 127.0.0.1:8082

配置文件中添加

    server {
        listen       9001;
        server_name  localhost;

        location ~ /edu/ {
            proxy_pass http://localhost:8001;
        }

        location ~ /vod/ {
            proxy_pass http://localhost:8002;
        }
    }

location 指令说明
该指令用于匹配 URL。
语法如下:

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

负载均衡配置

轮询

http {
   include       mime.types;
   default_type  application/octet-stream;
   sendfile        on;
   keepalive_timeout  65;
   
   #默认轮询
   upstream servers{
   	server 192.168.2.213:8080;
   	server 192.168.2.213:8081;
   }
   server {
       listen       80;
       server_name  localhost;

       location / {
           proxy_pass http://servers;
       }
   }
}

权重,权重越大,被分配的几率越大

http {
   include       mime.types;
   default_type  application/octet-stream;
   sendfile        on;
   keepalive_timeout  65;
   
   upstream servers{
   	server 192.168.2.213:8080 weight=2;
   	server 192.168.2.213:8080 weight=4;
   }
   server {
       listen       80;
       server_name  localhost;

       location / {
           proxy_pass http://servers;
       }
   }
}

iphash 同一个ip下访问会被分配到同一个服务器

http {
   include       mime.types;
   default_type  application/octet-stream;
   sendfile        on;
   keepalive_timeout  65;
   
   upstream servers{
    	ip_hash
   	server 192.168.2.213:8080;
   	server 192.168.2.213:8081;
   }
   server {
       listen       80;
       server_name  localhost;

       location / {
           proxy_pass http://servers;
       }
   }
}

fair 按后端服务器响应时间来分配,时间越短优先分配

http {
   include       mime.types;
   default_type  application/octet-stream;
   sendfile        on;
   keepalive_timeout  65;
   
   upstream servers{
   	server 192.168.2.213:8080;
   	server 192.168.2.213:8081;
   	fair
   }
   server {
       listen       80;
       server_name  localhost;

       location / {
           proxy_pass http://servers;
       }
   }
}

nginx缓存静态资源

http {
   include       mime.types;
   default_type  application/octet-stream;
   sendfile        on;
   keepalive_timeout  65;
   
   #压缩配置#  
   gzip  on;           #打开gzip压缩功能  
   gzip_min_length 1k; #压缩阈值  
   gzip_buffers 4 16k; #buffer 不用修改  
   gzip_comp_level 2;  #压缩级别:1-10,数字越大压缩的越好,时间也越长  
   gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;  #        压缩文件类型  
   gzip_vary off;      #跟Squid等缓存服务有关,on的话会在Header里增加 "Vary: Accept-Encoding"  
   gzip_disable "MSIE [1-6]\.";  #IE1-6版本不支持gzip压缩 

##缓存cache参数配置##  
   proxy_connect_timeout 5;  #nginx跟后端服务器连接超时时间(代理连接超时时间长度)
   proxy_read_timeout 60;  #连接成功后,后端服务器响应时间(代理接收超时时间长度)
   proxy_send_timeout 5;  #后端服务器数据回传时间(代理发送超时)
   proxy_buffer_size 16k;   #设置代理服务器(nginx)保存用户头信息的缓冲区大小
   proxy_buffers 464k;  #proxy_buffers缓冲区,网页平均在666k以下
   proxy_busy_buffers_size 128k;  #高负荷下缓冲大小(建议设置大小proxy_buffers*2)
   proxy_temp_file_write_size 128k;  #设定缓存文件夹大小
   #缓存到nginx的本地目录  
   proxy_temp_path  /var/cache/nginx/cache/;  #缓存临时文件夹
#设置缓存路径并且使用一块最大100M的共享内存,用于硬盘上的文件索引,包括文件名和请求次数,每个文件在1天内若不活跃(无请求)则从硬盘上淘汰,硬盘缓存最大10G,满了则根据LRU算法自动清除缓存。
   proxy_cache_path /var/cache/nginx/cache/cache_temp levels=1:2 keys_zone=imgcache:100m inactive=1d max_size=10g;

   server {
       listen       80;
       server_name  localhost;

   location ~ \.(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) {  
            proxy_pass http://192.168.2.213:8080;         #如果没有缓存则通过proxy_pass转向请求  
            proxy_cache cache_one;  
            proxy_cache_valid 200 302 1h;                              #对不同的HTTP状态码设置不同的缓存时间,h小时,d天数  
            proxy_cache_valid 301 1d;  
            proxy_cache_valid any 1m;  
            expires 30d;  #缓存时间30填
      }          
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lizhiqiang3344521

您的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值