Nginx配置文件nginx.conf的基本配置实例详解

目录
  • 前言
  • 1. Nginx配置样例
  • 2. Nginx负载均衡方式
    • 2.1 轮询
    • 2.2 权重
    • 2.3 Nginx解决集群共享session问题的方案
  • 3. Nginx动静分离(静态资源和动态资源来自于不同的服务器)
  • 总结

前言

对于Nginx首先要了解的是Nginx的作用和它的代理方式,Nginx的作用为负载均衡、代理方式为反向代理。

负载均衡平衡web服务器集群中转发给各服务器的请求数,防止出现服务器因为处理请求压力大或小导致内存溢出、宕机或资源浪费的情况发生。

反向代理对外暴露的地址是代理服务器的地址隐藏了真实服务器的地址,客户端将请求发送到代理服务器上。由代理服务器根据配置规则选择真实服务器处理请求,在获得服务器返回数据后再返回给客户端。此时代理服务器在外看来就是提供服务的服务器,客户端对代理是无感知的并不知道具体是哪台服务器处理的它的请求且不需要做任何配置。

正向代理:例如当因工需要,需要访问浏览器正常访问不到的服务器时,此时要找到一个可以访问该服务器的代理服务器。客户端将请求发送给代理服务器,代理服务器去访问该服务器,然后将访问到的数据返回给我们,这样的代理模式称为正向代理。正向代理时真实客户端的信息被屏蔽或者隐藏了,服务器只清楚请求来自哪台代理服务器而不清楚来自哪个客户端,但客户端非常明确要访问的服务器地址。

即:正向代理代理的是客户端的请求,反向代理代理的是服务器。

1. Nginx配置样例

例如页面请求地址为http://www.sayhi.com/products/pageManage,则在nginx.conf中配置server如下:

        server {
               listen 80;  #监听80的服务端口
               server_name www.sayhi.com;  #监听的域名
                location /{
                        root emstatic;
                        index index.html;
                }

                location /products {
                        proxy_pass http://127.0.0.1:8103/zuul-product/product/manage;
                        add_header 'Access-Control-Allow-Credentials' 'true';
                        add_header 'Access-Control-Allow-Origin' '*';
                }
        }

根据域名www.sayhi.com和后缀/products匹配到server中的server_name和location后,将剩余url后缀/pageManage拼接到location中的配置项proxy_pass的url后通过网关访问服务器资源。

所以访问http://www.sayhi.com/products/pageManage时经过nginx配置后实际访问的地址为http://127.0.0.1:8103/zuul-product/product/manage/pageManage。

2. Nginx负载均衡方式

2.1 轮询

依次按照顺序访问后端的每一个服务器,按照这个计算,相当于平均分配请求给所有集群节点-物理均衡。首先准备一个upstream的虚拟域名,保管后端服务器的详细信息。

       upstream ouservers{
              server 127.0.0.1:8091;
              server 128.0.0.2:8092;
              server 129.0.0.3:8093;
       }

nginx启动时加载成为一个内存的list对象元素有3个分别是8091 8092 8093,负载均衡的计算都是通过这个list完成的,在server中使用proxy_pass指向这个新创建的upstream名称ouservers。

添加server案例

       server{
              listen 80;
              server_name www.ou.com;
              location / {
                     proxy_pass http://ouservers/;
              }
       }

在访问有多个用户访问www.ou.com时会把请求轮询转给127.0.0.1:8091、128.0.0.2:8093和129.0.0.3:8093服务器去处理。

2.2 权重

总是按照物理均衡分配并发有时候不满足实际情况,按照情况通过占用比例的分配均衡逻辑就是权重(权衡比重)。权重基于轮询完成,可以在upstream的轮询基础上添加权重的关键字weight,权重值越高转发的请求越多(参数为整数等于down表示该server不可访问)。

       upstream ouservers {
              #补充后端服务器的ip:port-based
              server 127.0.0.1:8091 weight=10;
              server 128.0.0.2:8092 weight=5;
              server 129.0.0.3:8093 weight=1;
       }

2.3 Nginx解决集群共享session问题的方案

在单节点进程中可以使用session属性存储一些数据。在一次会话中使用这些属性如果是集群中会产生问题,不能实现集群共享session数据。由于session是属于服务器端的技术,不同进程中生成的session对象无法共同使用,所以无法使用session会话技术实现携带状态的请求功能。

数据通信共享:会话的session会被全部节点所存储,并发高时会导致集群中每一个节点中都有量的session对象容易造成服务器内存溢出。

ip_hash黏着:根据ip做hash取余计算绑定服务器但有可能导致倾斜,会有服务器由于倾斜严重,提前宕机。

采用第三方容器:session数据不再存储到服务器本地,采用第三方存储使每个服务器连接这个第三方存储读写数据。但引入第三方势必导致多占用网络访问带宽资源,对容器技术的稳定性,速度要求比较高。理论上存储容器可以是关系型数据库(例mysql)。但是非关系型数据库(例redis)是更好的选择。

nignx配置ip_hash黏着只需要在upstream的括号中填写一个关键属性 "ip_hash"。

       upstream ouservers {
              ip_hash;
              server 127.0.0.1:8091;
              server 127.0.0.1:8092;
              server 127.0.0.1:8093;
       }

3. Nginx动静分离(静态资源和动态资源来自于不同的服务器)

后端服务器集群是动态数据的来源,nginx作为http服务器代理用来管理后端所需文件和静态资源,在nginx服务器中,准备好访问的静态资源可以通过域名url地址访问。

添加server案例(以Linux系统为例)

       server{
              listen 80;
              server_name www.image.com;
              location /{
                     root /home/static; #关键字root配置项为静态资源的根目录
                     index default.html #没有找到指定静态资源时默认访问的静态资源
              }
        }

具体流转过程如下:请求地址http://www.image.com/xyy.png匹配server中的location后将静态资源名称tp.png衔接在root配置项后,拼接成资源在Nginx服务器上的绝对地址/home/static/tp.png根据地址拿到静态资源返回到浏览器页面给用户展示。

root配置项:可以是文件夹绝对路径,如Linux (root /home/static)、Windows(root C:/static)。也可以是文件夹相对路径root static(表示在nginx安装的根目录有一个文件夹叫做static)。

index配置项:表示当访问请求匹配到location中的root后,在没有找到指定静态资源时默认访问的静态资源地址。index也可以配置多个静态资源,例如:index default1.html default2.html。如果静态资源/home/static/default1.html不存在则接着验证/home/static/default2.html是否存在,存在则用/default2.html在该server中发起内部重定向去重新匹配location)

注:在配置nginx.conf文件时需要将资源ip和监听域名写进Nginx服务器的本地hosts文件中(如127.0.0.1 www.sayhi.com)

总结

到此这篇关于Nginx配置文件nginx.conf基本配置的文章就介绍到这了,更多相关Nginx配置文件nginx.conf内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Nginx配置文件nginx.conf的常用配置方法

    Nginx使 用有两三年了,现在经常碰到有新用户问一些很基本的问题,我也没时间一一回答,今天下午花了点时间,结合自己的使用经验,把Nginx的主要配置参数说明 分享一下,也参考了一些网络的内容,这篇是目前最完整的Nginx配置参数中文说明了.更详细的模块参数请参 考:http://wiki.nginx.org/Main 复制代码 代码如下: #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8;

  • 详解Nginx服务器中的nginx.conf配置文件

    Nginx 配置文件主要分成四部分:main(全局设置).http(HTTP 的通用设置).server(虚拟主机设置).location(匹配 URL 路径).还有一些其他的配置段,如 event,upstream 等. 通用设置     user nginx     指定运行 nginx workre 进程的用户和组 worker_rlimit_nofile #     指定所有 worker 进程能够打开的最大文件数     worker_cpu_affinity     设置 worke

  • 比较完整的Nginx配置文件nginx.conf常用参数中文详解

    概述 Nginx使用有两三年了,现在经常碰到有新用户问一些很基本的问题,我也没时间一一回答,今天下午花了点时间,结合自己的使用经验,把Nginx的主要配置参数说明分享一下,也参考了一些网络的内容,这篇是目前最完整的Nginx配置参数中文说明了.更详细的模块参数请参考:http://wiki.nginx.org/Main 配置总结 #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; #全局错误日

  • Nginx服务器配置HTTPS nginx.config 配置文件(教程)

    目录位置: /usr/local/www/nginx/conf(仅供参考) server { listen 443 ssl; server_name localhost; ssl_certificate server.crt; # cert.pem; ssl_certificate_key server.key; # cert.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL

  • nginx配置文件nginx.conf中文注释说明

    nginx的配置文件默认在nginx程序安装目录的conf下,主配置文件问nginx.conf.下面是nginx.conf文件的详细解释,如果有不太明白的,可以加我们的QQ群,来一下探讨. ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn

  • nginx.conf配置文件结构小结

    目录 核心配置文件的结构 nginx进程模型 核心配置文件的结构 nginx.conf主要由events.http.server.location.upstream等块配置项和一些行配置项组成. ##代码块中的events.http.server.location.upstream等都是块配置项## #规定哪些用户使用,nobody的话就是所有人 #user nobody; ##Nginx worker进程个数:其数量直接影响性能. #每个worker进程都是单线程的进程,他们会调用各个模块以实

  • Nginx配置文件nginx.conf详细说明

    在此记录下Nginx服务器nginx.conf的配置文件说明, 部分注释收集与网络. #运行用户 user www-data; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; #工作模式及连接数上限 events { use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但

  • Nginx配置文件(nginx.conf)配置详解(总结)

    现在经常碰到有新用户问一些很基本的问题,最近整理了一下,Nginx的配置文件nginx.conf配置详解如下: user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目.根据硬件调整,通常等于CPU数量或者2倍于CPU. error_log logs/error.log; error_log logs/error.log notice; error_log logs/error.log info; 错误日志:

  • Nginx的nginx.conf配置文件中文注释说明

    复制代码 代码如下: #运行用户     user www-data;        #启动进程,通常设置成和cpu的数量相等     worker_processes  1;       #全局错误日志及PID文件     error_log  /var/log/nginx/error.log;     pid        /var/run/nginx.pid;       #工作模式及连接数上限     events {         use   epoll;             #

  • Nginx配置文件nginx.conf的基本配置实例详解

    目录 前言 1. Nginx配置样例 2. Nginx负载均衡方式 2.1 轮询 2.2 权重 2.3 Nginx解决集群共享session问题的方案 3. Nginx动静分离(静态资源和动态资源来自于不同的服务器) 总结 前言 对于Nginx首先要了解的是Nginx的作用和它的代理方式,Nginx的作用为负载均衡.代理方式为反向代理. 负载均衡:平衡web服务器集群中转发给各服务器的请求数,防止出现服务器因为处理请求压力大或小导致内存溢出.宕机或资源浪费的情况发生. 反向代理:对外暴露的地址是

  • Nginx 多站点配置实例详解

    Nginx 多站点配置实例详解 在一台 VPS 上,我们有时候需要同时跑几个 virtualenv.比如 virtualenv app1 跑的是 Django 的一个应用,而 virtualenv app2 跑的是 Tornado.那么如何配置 Nginx,让它同时支持这两个 virtualenv 的运行呢? 首先是 Nginx 的主配置,位于 etc/nginx/ngnix.conf,让它保持默认就行: user nginx; worker_processes 1; error_log /va

  • ThinkPHP 在阿里云上的nginx.config配置实例详解

    具体代码如下所示: # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log;

  • springmvc与mybatis集成配置实例详解

    简单之美,springmvc,mybatis就是一个很好的简单集成方案,能够满足一般的项目需求.闲暇时间把项目配置文件共享出来,供大家参看: 1.首先我们来看下依赖的pom: <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.ve

  • Admin - SpringBoot + Maven 多启动环境配置实例详解

    一:父级pom.xml文件 resources目录下新建指定文件夹,存放Spring配置文件 <profiles> <profile> <id>dev</id> <properties> <profiles.active>dev</profiles.active> </properties> <activation> <activeByDefault>true</activeByD

  • Vue 中axios配置实例详解

    1.GET 请求 //向具有指定ID的用户发出请求 axios.get('/user?ID=12345') .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); }); // 也可以通过 params 对象传递参数 axios.get('/user', { params: { ID: 12345 } }) .then(function (respons

  • linux rsync安装 配置 实例详解

    Redhat中安装rsync 1.  首先在服务端和客户端都安装rsync,我的RHEL5默认已经安装好了.在安装RedHat5的时候,可以在软件定制中的"基本系统"-->"基本"的"可选的软件包"中看见:rsync-2.6.8是默认选择安装的 2.    也可以通过命令行检查是否安装: 或者:rpm –q rsync 3.  如果在开始安装RedHat的时候,使用默认选择的rysnc软件,但现在想用更高版本的rsync,可以卸载掉rysn

  • Struts2拦截器Interceptor的原理与配置实例详解

    一.Struts2拦截器原理: Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的    拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器. 比如:应用要求用户登陆,且必须为指定用户名才可以查看系统中某个视图资源:否则,系统直接转入登陆页面.对于上面的需求,可以在每个Action的执行实际处理逻辑之前,先执行权限检查逻辑,但这种做法不利于代码复用.因为大部分Action里的权限检查代码都大同小异,故

  • nginx虚拟主机配置实例详解

    nginx虚拟主机配置 server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.

  • Spring boot中@Conditional和spring boot的自动配置实例详解

    我们知道,spring boot自动配置功能可以根据不同情况来决定spring配置应该用哪个,不应该用哪个,举个例子: Spring的JdbcTemplate是不是在Classpath里面?如果是,并且DataSource也存在,就自动配置一个JdbcTemplate的Bean Thymeleaf是不是在Classpath里面?如果是,则自动配置Thymeleaf的模板解析器.视图解析器.模板引擎 那个这个是怎么实现的呢?原因就在于它利用了Spring的条件化配置,条件化配置允许配置存在于应用中

随机推荐