`
qindongliang1922
  • 浏览: 2148322 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:116345
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:124613
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:58491
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:70379
社区版块
存档分类
最新评论

Nginx配置的一些小功能

阅读更多

前面的文章,已经介绍了Nginx的作用以及Nginx的安装,本篇文章我们来看几个实际的小例子,来对Nginx进一步加深了解。



(一)Nginx一些常用的配置介绍

````
//nginx运行的用户,一般不要设置成root
user nginx  
//工作进程,通常等于cpu的数量
worker_processes  1;

//全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
error_log  /var/log/nginx/error.log warn;
//nginx的进程文件
pid        /var/run/nginx.pid;

events {
//#单个进程最大连接数(最大连接数=连接数*进程数)
    worker_connections  1024;
}

//设置http一般
http {
   
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    //log日志格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    //访问日志的路径
    access_log  /var/log/nginx/access.log  main;
    //指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件
    sendfile        on;
    #tcp_nopush     on;
    //长连接超时时间,单位是秒    
    keepalive_timeout  65;
    //是否开启压缩
    #gzip  on;
    //启动时候加载的配置文件
    include /etc/nginx/conf.d/*.conf;

    //定义一个虚拟主机
    server{
    //监听的端口号
    listen    8777;
    //域名配置,可以有多个,空格分开
    server_name  192.168.10.160  www.myhttp.com;
    //设置编码集
    charset utf-8;

    //资源的请求访问配置
    location / {
    //定义静态资源的目录
        root   /usr/share/nginx/html;
        //定义访问的html首页,可以配置多个,如果不生效,依次访问后面的
        index  index.html index.htm;
    }
    //错误页面的状态码及错误的html页面
    error_page   500 502 503 504  /50x.html;
    //500+相关错误的返回定义
    location = /50x.html {
        root   /usr/share/nginx/html;
    }


   }
}
````





(二)使用Nginx配置一个静态资源服务

使用nginx配置静态资源文件访问,非常简单,如第一步里面的html的首页访问,下面是一个网站,css,js,image等相关资源的静态访问配置:
````
//
    location ~ ^/(images|javascript|js|css|flash|media|static)/  {

      root /root/ ;
      expires     3d;#缓存有效期
      //autoindex on; #打开目录浏览功能
      //autoindex_exact_size on; #人性化方式显示文件大小否则以byte显示
     // autoindex_localtime on; #按服务器时间显示,否则以gmt时间显示
     allow 192.168.10.100;
     allow 172.29.73.0/24;
     deny all;

     }
````
上面这一段代码需要配置server里面,然后就可以访问/root/下面的静态资源,并且可以定义相关用户ip的可以访问。

除此之外,我们还可以对指定文件夹开启目录浏览功能,这样就能够在web页面上随便的访问需要的资源了。



(三)使用Nginx+Html配置一个可以代理播放视频的服务


使用nginx+html可以非常方便的搭建一个视频播放服务,这里面默认的nginx是支持mp4类型的视频播放的,但是如果有其他格式如flv则需要相关的js支持才可以。

````
    location ~ ^/(videos)/  {
      root /root/ ;
      autoindex on; #打开目录浏览功能
      mp4;
      mp4_buffer_size       1m;
      mp4_max_buffer_size   5m;
      limit_rate        260k;
      limit_rate_after  3m;
      autoindex_exact_size off;
      autoindex_localtime off;

     }
````

html代码如下:
````
<!DOCTYPE html>
<html>
<head>
<title> play vedio</title>
   //js插件vedio
 <link href="http://vjs.zencdn.net/5.0.2/video-js.css" rel="stylesheet">
    <script src="http://vjs.zencdn.net/ie8/1.1.0/videojs-ie8.min.js"></script>
    <script src="http://vjs.zencdn.net/5.0.2/video.js"></script>
</head>
<body>
   //mp4的播放        
   <video src="videos/a.mp4" controls="controls" width="500" height="400"></video>
   //flv的播放
  <video id="example_video_1" class="video-js vjs-default-skin" 
  controls preload="none" width="640" height="400" 
  poster="http://vjs.zencdn.net/v/oceans.png" data-setup="{}">
    <source src="videos/c.flv" type="video/flv">
  </video>



</body>
</html>
````
上面用到了video.js来支持flv视频格式的播放.




(四)使用Nginx配置反向代理+负载均衡

最后这一个功能,应该是实际开发中最常见的场景了,先来看一个简单的代理转发,
假如现在我们有一个tomcat服务,端口号是8888,部署ip是192.168.10.161,而
nginx的ip是192.168.10.160,那么如何做到通过nginx转发请求到tomcat的机器上呢?

简单的代理转发:
````
server{
    //监听端口80
    listen 80;
    //域名
    server_name 192.168.10.160;
    location / {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://192.168.10.161:8888/web/index;
    }
    //记录应用的log
    access_log  /var/log/nginx/my_proxy.log;


````


通过上面的配置,当用户访问http://192.168.10.160时,就会自动跳转到http://192.168.10.161:8888/web/index这个tomcat的后端服务上面。


下面问题来了,一台tomcat已经扛不住当前的流量请求了,我们需要再部署一台tomcat来做负载均衡,假设ip是192.168.10.162,那么如何用Nginx来负载均衡的转发呢?
````

 http{
 
   upstream  my_service {
        server    192.168.10.161:8888  
        server    192.168.10.162:8888 
    }
    
    
    server {
     listen       80;
     server_name  www.backend.com;
    
     location / {
    
     proxy_pass http://my_service;
    // 后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
     proxy_redirect off;
     proxy_set_header Host $host;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
      }  
    
    
    }
    
}
````
如上就完成了一个负载均衡的例子,当然负载均衡的策略有很多包括:

(1)轮询

(2)权重

(3)最少连接数

(4)最少处理时间

(5)ip_hash

(6)fair


等等,github上有很多的扩展插件,刚兴趣的同学可以自己尝试下。


有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。 技术债不能欠,健康债更不能欠, 求道之路,与君同行。
0
0
分享到:
评论

相关推荐

    nginx 网页配置工具

    使用WebUI配置nginx的各项功能, 包括http协议转发, tcp协议转发, 反向代理, 负载均衡, ssl证书自动申请、续签、配置等, 最终生成nginx.conf文件并覆盖nginx的默认配置文件, 完成nginx的最终功能配置。 支持nginx...

    nginx四层代理测试 及SLB负载均衡功能配置测试

    nginx四层代理测试 及SLB负载均衡功能配置测试

    Nginx配置详解.docx

    Nginx的稳定性、功能集、示例配置文件和低系统资源的消耗让他后来居上,在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。 牛逼吹的差不多啦,如果你还不过瘾,你可以百度百科或者一些书上找到这样的夸耀...

    Nginx配置学习资料.pdf

    Nginx配置学习资料: Nginx常用功能 Nginx配置文件结构 Nginx代理服务的配置说明 Nginx负载均衡详解

    apache到nginx配置文件转换工具

    一个开源的Linux下运行... 该工具从Apache Web服务器中的各模块功能的角度进行分析,生成Nginx中相应模块的配置方式,然后以报告的形式生成转换后的Nginx配置文件。 官网:https://github.com/leeleander/apache2nginx

    MongoDB+Nginx配置

    MongoDB+Nginx配置,本文档主要以Centos为例,一步步演示如何进行操作,帮助小伙伴们快速完成功能搭建操作.

    Nginx同时支持Http和Https的配置详解

    现在的网站支持Https几乎是标配功能,Nginx能很好的支持Https功能。下面列举一个配置同时支持Http和Https的功能。 需要注意的是:既然选择使用Https,就是为了保证通信安全,那么就没必要再用Http进行通信了。在URL...

    nginxWebUI是一款图形化管理nginx配置得工具系统, 可以使用网页来快速配置nginx的各项功能

    方便快捷易用的Nginx可视化UI网页管理部署配置工具系统,使用Web网页系统来快速配置部署,支持在线配置你的Nginx/Openresty的反向代理、...快速部署多个或N个Nginx集群节点,支持导入现有Nginx配置文件让你无忧使用.

    nginx配置参数说明.txt

    基本功能: 实现与服务静态文件... 支持平滑配置更新或程序版本升级 定制访问日志,支持使用日志缓存以提高性能 支持URL rewrite 支持路径别名 支持基于IP及用户的认证: 支持速率限制,并发数限制等

    nginx代理配置完整包

    最全配置,下載即用,nginx...当然你也可以使用nginx配置正向代理,本是介绍如何配置nginx的反向代理。 nginx反向代理的指令不需要新增额外的模块,默认自带proxy_pass指令,只需要修改配置文件就可以实现反向代理。

    apache配置文件转换到nginx配置文件的工具

    一个开源的Linux下运行的命令行工具,能将Apache的配置文件转换成相应的... 该工具从Apache Web服务器中的各模块功能的角度进行分析,生成Nginx中相应模块的配置方式,然后以报告的形式生成转换后的Nginx配置文件。

    与DNS配置有关的nginx服务器配置

    3. 配置Nginx服务器,使得网站支持443端口的 https 加密数据传输,可以通过https://erp.example.com访问,并返回 html 代码 “&lt;h1&gt; erp.example.com &lt;/h1&gt;” 4. 在服务器上安装部署Tomcat服务器 5.资源只包含实验...

    Web应用安全:Nginx禁止目录列出配置.pptx

    Nginx禁止目录列出配置 Nginx禁止目录列出配置 在PHP网站中,在没有进行配置的情况下,攻击者可以通过在网址后面加上“../”或者“/*53.pdf”等语句来读取网站目录,这是不利于服务器和网站安全的。 Nginx禁止目录列...

    基于linux下nginx的安装及项目部署

    一、nginx介绍及功能讲解 二、nginx的安装 三、nginx配置相关指令 四、nginx的实例应用(项目部署)

    Nginx配置详情文档

    其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。 Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,...

    nginx网页管理工具,使用网页来快速配置与管理nginx单机与集群

    nginxWebUI是一款图形化管理nginx配置得工具, ... nginxWebUI并不能涵盖nginx所有功能, 但能覆盖nginx日常90%的功能使用配置, 平台没有涵盖到的nginx配置项, 可以使用自定义参数模板, 在conf文件中生成配置独特的参数。

    Nginx配置统计流量带宽请求及记录实时请求状态的方法

    ngx_req_status用来展示nginx请求状态信息,类似于apache的status,nginx自带的模块只能显示连接数等等信息,我们并不能知道到底有哪些请求、以及各url域名所消耗的带宽是多少。ngx_req_status提供了这些功能. 功能...

    nginx正向代理https和非80端口配置文档.pdf

    nginx代理功能十分强大,经常用来做反向代理,但有的实际工作环境需要正向代理,经安装发现网上常用的方法有两点问题,1.并不支持https代理,2需要访问的网址一但加上非80端口就会403报错。 后经反复测试,已找到...

    浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法

    突然发现nginx不支持pathinfo功能,难怪在TP中调怎么都没管用。 2,开始上文件了,比网上其他一些杂的好多了: server { listen 80; #listen [::]:80; server_name www.tp.com tp.com; index index....

    界面化实现https证书生成和nginx配置

    java实现的一个使用openssl生成crt证书的小工具,生成后动态修改nginx.conf文件,启用nginx中的https功能

Global site tag (gtag.js) - Google Analytics