精华内容
下载资源
问答
  • Nginx配置

    万次阅读 多人点赞 2019-04-22 11:12:15
    1.Web 服务器: 相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll ...

    一. ngnix用途

    1. Web 服务器:

    相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型.

    2.负载均衡服务器

    支持作为 HTTP代理服务器对外进行服务。Nginx用C编写,不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。

    3.作为邮件代理服务器

    Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验.

    4.优势

    安装非常的简单,配置文件 非常简洁(还能够支持perl语法),Bugs非常少的服务器, Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在 不间断服务的情况下进行软件版本的升级。

    二. windows下安装nginx

    1. 下载nginx:

    http://nginx.org/en/download.html 
    

    2. 解压即可

    在这里插入图片描述

    3.nginx的启动

    1. 直接双击nginx.exe,双击后一个黑色的弹窗一闪而过.
    2. 打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe 或者 start nginx ,回车即可
    3. 检查nginx启动是否成:
      直接在浏览器地址栏输入网址http://localhost:80,回车,出现以下页面说明启动成功
      在这里插入图片描述
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190422101037498.png)
    

    三.nginx配置

    1. nginx的配置文件是conf目录下的nginx.conf

    在这里插入图片描述

    2. nginx默认的访问路径server_name:localhost和监听端口listen:80,启动nginx之后,在浏览器中访问http://localhost:80或者http://localhost(http默认端口80,可以不写),即可出现nginx的欢迎页面

    在这里插入图片描述

    3. 启动之后, 如果80端口被占用(netstat -ano | findstr “80”), 可以修改listen的值,不需要重启nginx,只需要执行命令:nginx -s reload,即可生效。

    四. nginx的location配置

    location指令的作用是根据用户请求的URI来执行不同的应用,也就是根据用户请求的网站URL进行匹配,匹配成功即进行相关的操作。
    即:此模块专门将请求导向其他服务

    1. location的语法:

    location [ = | ~ | ~* | ^~ ] uri { … }
    | 指令 | | 匹配标识 | | 匹配的网站网址 | | 匹配URI之后要执行的配置段|
    精确匹配(=) > 字符串打头匹配(^~) > 正则匹配() > 否定式正则匹配(!或!) > 通用匹配(/)。两种正则当中,区分大小写的优先级高,也就是不带*的优先级高(范围从小到大)

    2. 匹配模式:

    a. 精确匹配:

    location = / {
       #精确匹配访问网站根目录
    }
    location = /login {
       #精确匹配http://xxx.com/login
    }
    

    b. ^~ 表示以什么打头,关键在于正则的开头符 ^

    location ^~ /static/ {
       #以/static打头,比如 http://xxx.com/static/jQuery.js
    }
    

    c. 正则匹配(~ 区分大小写的正则, ~* 不区分大小的正则)

    location ~ \.png {
        #以png结尾,比如比如 http://xxx.com/img/a.png
    }
    location ~* \.png$ {
        #以png或者PNG或者Png等等结尾,比如比如 http://xxx.com/img/a.pNg。如果是png结尾,会优先匹配上面一条。
    }
    

    d. 排除法的正则,同样区分大小写优先于不区分大小写

    location !~ \.png$ {
       #匹配“以png结尾”失败,进入location,那就情况多了去了,只要不以png结尾就行
    }
    location !~* \.xhtml$ {
       #匹配“以png或者PNG或者PnG等等”结尾失败,进入location,那情况也多了去了,只要不是PNG的各种大小写变体就行
    }
    e. 通用匹配
    location / {
       #用来兜底的,当前面其他所有的规则都不满足条件,就归入这个通用的
    }
    

    f. “@”前缀

    在这里插入代码片
    

    注意:inginx中配置proxy_pass时,当在后面的url加上了"/",相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有"/",则会把匹配的路径部分也给代理走.
    例如:
    nginx请求链接:http://localhost:8080/api/getName?name=xiaoming
    a.第一种情况:proxy_pass链接的最后不带"/"
    在这里插入图片描述
    则被代理为:http://localhost:8082/api/getName?name=xiaoming
    b.第二种情况:proxy_pass链接的最后带"/"
    在这里插入图片描述
    则被代理为:http://localhost:8082/getName?name=xiaoming

    五. 负载均衡:

    1.nginx的反向代理:

    nginx的代理过程,就是将请求发送给nginx,然后将请求转发给后端服务器,后端服务器处理完毕之后将结果再发给nginx,nginx再把结果发送给客户端。后端服务器可在远程也可在本地,也可以是nginx服务器内部定义的其他虚拟主机。这些接收
    nginx转发的服务器被称为上游(upstream)使用nginx做代理的目的之一是扩展基础架构的规模。nginx可以处理大量并发连接,请求到来后,nginx可将其转发给任意数量的后台服务器进行处理,这等于将负载均衡分散到整个集群

    2.缓冲:

    nginx也提供了缓冲的机制,用于提高性能。没有缓冲的情况下,数据直接从后端服务器发送给客户端。缓冲的作用是在nginx上临时存储来自后端服务器的处理结果,从而可以提早关闭nginx到后端的连接,减少IO的损耗。一般内容存放在内存当中,但当内容过多,造成的内存不够时,会把内容存放在临时文件目录下。

    3.负载均衡:

    客户端访问nginx的时候,只需要配置一个ip和一个端口,nginx帮助我们把请求转发不同的后台服务中。
    在这里插入图片描述

    六. nginx配置多个配置文件:

    需要在server中加:include config/*.conf;
    

    七. 跨域

    跨域请求就是指:当前发起请求的域与该请求指向的资源所在的域不一样。这里的域指的是这样的一个概念:我们认为若协议 + 域名 + 端口号均相同,那么就是同域。
    
    展开全文
  • Nginx配置反向代理

    万次阅读 多人点赞 2019-07-14 14:05:31
    Nginx配置反向代理,什么是反向代理 反向代理服务器决定哪台服务器提供服务。返回代理服务器不提供服务器。只是请求的转发。

    更多Nginx教程可以点击下面的链接查看哦

    https://www.itqiankun.com/article/1564904492

    什么是反向代理

    反向代理服务器决定哪台服务器提供服务。返回代理服务器不提供服务器。只是请求的转发。
    正向代理如下
    在这里插入图片描述
    反向代理如下
    在这里插入图片描述

    Nginx实现反向代理的过程
    首先安装两个tomcat服务器,都放到nginx服务器里面,两个端口分别是8081和8082

    首先是下载tomcat,使用下面的命令

    wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.94/bin/apache-tomcat-7.0.94.tar.gz
    

    在这里插入图片描述
    然后是加载这个压缩包

    tar -xvf apache-tomcat-7.0.94.tar.gz
    

    在这里插入图片描述
    然后把apache-tomcat-7.0.94复制成两份,一份是tomcat8081,一份是tomcat8082,过程如下

    cp -r apache-tomcat-7.0.94 tomcat8081
    cp -r apache-tomcat-7.0.94 tomcat8082
    

    在这里插入图片描述
    然后通过Editplus远程连接修改tomcat8081里面的server.xml配置里面修改端口号,(怎么通过EditPlus连接linux,看着篇文章:https://blog.csdn.net/weixin_43689480/article/details/95867289,注意主要要修改三个端口号

    <Server port="8006" shutdown="SHUTDOWN">
    <Connector port="8081" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
    <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
    

    然后通过Editplus远程连接修改tomcat8082里面的server.xml配置里面修改端口号(怎么通过EditPlus连接linux,看着篇文章:https://blog.csdn.net/weixin_43689480/article/details/95867289,注意主要要修改三个端口号

    <Server port="8007" shutdown="SHUTDOWN">
    <Connector port="8082" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
    <Connector port="8011" protocol="AJP/1.3" redirectPort="8443" />
    

    然后把tomact8081里面的webapps文件夹里面的ROOT文件夹里面的index.jsp变成下面这样,此时可以看到下面输入的内容是8081

    
    <!DOCTYPE html>
    <%@ page session="false" %>
    <%
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy");
    request.setAttribute("year", sdf.format(new java.util.Date()));
    request.setAttribute("tomcat7Url", "http://tomcat.apache.org/");
    request.setAttribute("tomcat7DocUrl", "/docs/");
    request.setAttribute("tomcat7ExamplesUrl", "/examples/");
    %>
    <html lang="en">
        <head>
            <title><%=request.getServletContext().getServerInfo() %></title>
            <link href="favicon.ico" rel="icon" type="image/x-icon" />
            <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />
            <link href="tomcat.css" rel="stylesheet" type="text/css" />
        </head>
    
        <body>
    		<h1>tomcat8081index.jsp<h1>
        </body>
    
    </html>
    

    然后把tomact8082里面的webapps文件夹里面的ROOT文件夹里面的index.jsp变成下面这样,此时可以看到下面输入的内容是8082

    
    <!DOCTYPE html>
    <%@ page session="false" %>
    <%
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy");
    request.setAttribute("year", sdf.format(new java.util.Date()));
    request.setAttribute("tomcat7Url", "http://tomcat.apache.org/");
    request.setAttribute("tomcat7DocUrl", "/docs/");
    request.setAttribute("tomcat7ExamplesUrl", "/examples/");
    %>
    <html lang="en">
        <head>
            <title><%=request.getServletContext().getServerInfo() %></title>
            <link href="favicon.ico" rel="icon" type="image/x-icon" />
            <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />
            <link href="tomcat.css" rel="stylesheet" type="text/css" />
        </head>
    
        <body>
    		<h1>tomcat8082index.jsp<h1>
        </body>
    
    </html>
    

    然后就是启动tomcat8081和tomcat8082,启动如下所示

    /root/tomcat8081/bin/startup.sh
    /root/tomcat8082/bin/startup.sh
    

    然后访问http://47.91.248.236:8081/ 路径结果如下,成功了

    在这里插入图片描述
    然后访问http://47.91.248.236:8082/ 路径结果如下,成功了
    在这里插入图片描述

    然后我们配置本地电脑里面的host文件变成下面这样

    这里我们借助ihost来操作
    在这里插入图片描述

    然后配置nginx服务器里面的conf文件夹里面的nginx.conf配置文件,配置完之后记得要重启nginx服务器

    此时当访问www.sina.com 的时候,就会访问host文件,然后就会去找47.91.248.236 这个ip对应的linux服务器,然后www.sina.com 默认的端口就是80,所以访问www.sina.com 的时候,就会找到下面的upstream tomcat1,然后下面的upstream tomcat1就会去找server 47.91.248.236:8081,就会找到8081端口的tomcat服务器,然后因为upstream tomcat1的默认访问页是index.jsp,所以就会访问8081端口的tomcat服务器的index.jsp页面(也就是http://47.91.248.236:8081/index.jsp

    此时当访问www.huohu.com 的时候,就会访问host文件,然后就会去找47.91.248.236 这个ip对应的linux服务器,然后www.huohu.com 默认的端口就是80,所以访问www.huohu.com 的时候,就会找到下面的upstream tomcat2,然后下面的upstream tomcat2就会去找server 47.91.248.236:8082,就会找到8082端口的tomcat服务器,然后因为upstream tomcat2的默认访问页是index.jsp,所以就会访问8082端口的tomcat服务器的index.jsp页面(也就是http://47.91.248.236:8082/index.jsp

    user  root;
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
    	#配置www.sina.com:80对应的服务器监听端口
    	upstream tomcat1 {
    	server 47.91.248.236:8081;
    	}
    	server {
    	    listen       80;
    	    server_name  www.sina.com;
    	    location / {
    	        proxy_pass   http://tomcat1;
    	        #配置默认访问页,这里就会访问到tomcat1里面的那个index.jsp文件里面
    	        index  index.jsp;
    	    }
    	}
    	
        
        #配置www.houhu.com:80对应的服务器监听端口
        upstream tomcat2 {
    	server 47.91.248.236:8082;
        }
        server {
            listen       80;
            server_name  www.houhu.com;
            location / {
                proxy_pass   http://tomcat2;
                #配置默认访问页,这里就会访问到tomcat2里面的那个index.jsp文件里面
                index  index.jsp;
            }
        }
    }
    
    然后我们访问 www.sina.com

    此时访问到的就是tomcat8081对应的tomcat服务器
    在这里插入图片描述

    然后我们访问 www.huohu.com

    此时访问到的就是tomcat8082对应的tomcat服务器

    在这里插入图片描述

    到此nginx的反向代理就完成了

    能看到这里的同学,觉得好的话就帮忙点个赞吧,Thanks♪(・ω・)ノ

    原文链接

    大佬链接
    https://www.itqiankun.com/article/1564904492

    展开全文
  • Nginx配置HTTPS

    万次阅读 2017-10-16 17:49:02
    Nginx配置HTTPS最近配置了现网网站的HTTPS,简单记录一下配置过程。先交代一下我的服务部署环境:Nginx监听80端口,转发到Tomcat的8080端口;服务器使用的是阿里云的ECS,操作系统是Windows Server 2012;CA证书也是...

    Nginx配置HTTPS

    最近配置了现网网站的HTTPS,简单记录一下配置过程。

    先交代一下我的服务部署环境:Nginx监听80端口,转发到Tomcat8080端口;服务器使用的是阿里云的ECS,操作系统是Windows Server 2012CA证书也是在阿里云的CA证书服务上面申请的免费证书。

    1. 申请CA证书
      首先去购买CA证书。一般各大云服务提供商都会有此类证书服务,根据公司和业务需求,可以自己选择免费或者付费的证书。我选择的是Symantec 赛门铁克的免费型DV SSL,此类证书一个证书对应一个域名,如果涉及到二级域名需要另外申请一个二级域名的CA证书。阿里云上面的证书购买过程比较简单,需要注意的两个地方:1.要对域名进行验证;2.CSR的生成方式。如果自己的域名是放在阿里云解析上面的,阿里云会自动校验;如果域名没有在阿里云上面解析,需要按照阿里云的提示进行一下操作。另外CSR的生成方式建议选择系统生成CSR,自己生成CSR稍微麻烦一点。证书购买成功后补全好自己的域名即可。
    2. Nginx配置
      CA证书审核通过后,将证书下载到本地,会得到一个zip包,里面有xxx.keyxxx.pem两个文件。
    1. Nginx的安装目录下创建cert目录,并将xxx.keyxxx.pem拷贝到该目录中。注意:如果是自己生成的CSR文件,应该只有一个xxx.key文件,将该文件拷贝进去就可以了。
    2. 打开conf目录中的nginx.conf配置文件修改443端口监听配置。Nginx默认配置是将443端口的监听配置注释掉了的,如下:
    # HTTPS server
    # #server {
    # listen 443;
    # server_name localhost;
    # ssl on;
    # ssl_certificate cert.pem;
    # ssl_certificate_key cert.key;
    # ssl_session_timeout 5m;
    # ssl_protocols SSLv2 SSLv3 TLSv1;
    # ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    # ssl_prefer_server_ciphers on;
    # location / {
    #
    #
    #}
    #}
    

    将注释打开,并对其中部分内容进行修改,修改后如下:

    server {
        listen 443;
        server_name your-domain-name;
        ssl on;
        root html;
        index index.html index.htm;
        ssl_certificate   cert/214293826510663.pem;
        ssl_certificate_key  cert/214293826510663.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        location / {
            root html;
            index index.html index.htm;
        }
    }
    
    1. 修改配置并保存后,Nginx安装目录运行nginx.exe -s reload命令可重启Nginx使配置生效。
    2. 通过https:\\xxxx.com方式访问你的网站,如果能够正常访问,浏览器左边出现绿色的标记或者出现锁的标记那就成功了。

    几点注意事项:

    1. 如果HTTPS方式访问网站出现无响应的情况,可以看看自己的服务器防火墙配置,是不是需要将443端口加到例外中去;
    2. 注意自己xxx.pemxxx.key的存放路径,区分相对路径和决定路径使用方式;
    3. 通过Nginx安装目录下的logs文件夹中的access.logerror.log日志文件来进行排错;
    4. 同一个Nginx可以配置多个HTTPS的域名,只需要将上面443端口的监听配置复制一份加到配置文件中,然后修改好相应的server_namexxx.pemxxx.key文件路径即可。

    补充一点配置:
    如果Nginx配置了HTTPS,那背后的Tomcat就没有必要再进行配置了,另外,为了兼容原来80端口的HTTP方式的访问,可以将80端口的访问请求全部转发到443端口上,增加配置如下:

    server {
        listen       80;
        server_name  your-domain.com;
    
        location = / {
            rewrite ^(.*) https://your-domain.com/$1 permanent;
        }
    
        location / {
            rewrite ^(.*) https://your-domain.com/$1 permanent;
        }
    }
    
    展开全文
  • 目录 1.Nginx介绍 1.1 什么是Nginx? 1.2Nginx能做什么 1.3 为什么要选择用Nginx ... 2.2 Nginx配置 2.3 Nginx常用操作 3.Nginx工作原理 3.1 工作原理: 3.1.1 Nginx处理Request请求过程解析 ...

    热门系列:


    目录

    1.Nginx介绍

       1.1 什么是Nginx?

       1.2 Nginx能做什么

       1.3 为什么要选择用Nginx

    2.Nginx的安装与配置

       2.1 Nginx 安装

       2.2 Nginx配置

       2.3 Nginx常用操作

    3.Nginx工作原理

       3.1 工作原理:

          3.1.1 Nginx处理Request请求过程解析

          3.1.2 一个完整的Request请求流程

       3.2 keepalive 长连接


    1.Nginx介绍

    1.1 什么是Nginx

    Nginx (engine x) 是一个高性能的HTTP反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

    那么何为正向代理与反向代理呢?说白了,正向代理就是客户端的代理,反向代理就是服务器端的代理。

    1.2 Nginx能做什么

    • 作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型
    • 作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。
    • 作为邮件代理服务器:Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。

    1.3 为什么要选择用Nginx

    • 作为Web服务器,Nginx处理静态文件、索引文件,自动索引的效率非常高
    • 作为代理服务器,Nginx可以实现无缓存的反向代理加速,提高网站运行速度
    • 作为负载均衡服务器,Nginx既可以在内部直接支持Rails和PHP,也可以支持HTTP代理服务器对外进行服务,同时还支持简单的容错和利用算法进行负载均衡
    • 在性能方面,Nginx是专门为性能优化而开发的,实现上非常注重效率。它采用内核Poll模型,可以支持更多的并发连接,最大可以支持对5万个并发连接数的响应,而且只占用很低的内存资源
    • 在稳定性方面,Nginx采取了分阶段资源分配技术,使得CPU与内存的占用率非常低。Nginx官方表示,Nginx保持1万个没有活动的连接,而这些连接只占用2.5MB内存,因此,类似DOS这样的攻击对Nginx来说基本上是没有任何作用的
    • 在高可用性方面,Nginx支持热部署,启动速度特别迅速,因此可以在不间断服务的情况下,对软件版本或者配置进行升级,即使运行数月也无需重新启动,几乎可以做到7x24小时不间断地运行
    • Nginx 安装非常的简单,配置文件 非常简洁(还能够支持perl语法),Bugs非常少的服务器: Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动

    2.Nginx的安装与配置

    2.1 Nginx 安装

    系统平台:CentOS release 6.6 (Final) 64位。

    一、安装编译工具及库文件

    yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

    二、首先要安装 PCRE

    PCRE 作用是让 Nginx 支持 Rewrite 功能。

    1、下载 PCRE 安装包,下载地址: http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

    [root@bogon src]# wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

     

    2、解压安装包:

    [root@bogon src]# tar zxvf pcre-8.35.tar.gz

    3、进入安装包目录

    [root@bogon src]# cd pcre-8.35

    4、编译安装 

    [root@bogon pcre-8.35]# ./configure [root@bogon pcre-8.35]# make && make install

    5、查看pcre版本

    [root@bogon pcre-8.35]# pcre-config --version

     

    三、安装 Nginx

    1、下载 Nginx,下载地址:http://nginx.org/download/nginx-1.6.2.tar.gz

    [root@bogon src]# wget http://nginx.org/download/nginx-1.6.2.tar.gz

     

    2、解压安装包

    [root@bogon src]# tar zxvf nginx-1.6.2.tar.gz

    3、进入安装包目录

    [root@bogon src]# cd nginx-1.6.2

    4、编译安装

    [root@bogon nginx-1.6.2]# ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35 [root@bogon nginx-1.6.2]# make [root@bogon nginx-1.6.2]# make install

    5、查看nginx版本

    [root@bogon nginx-1.6.2]# /usr/local/webserver/nginx/sbin/nginx -v

     

    到此,nginx安装完成。


    2.2 Nginx配置

    注:红色字体内容为配置说明

    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;  

    #错误日志:存放路径。

     

    pid logs/nginx.pid;

    #pid(进程标识符):存放路径。

     

    worker_rlimit_nofile 204800;

    指定进程可以打开的最大描述符:数目。

    这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。

    现在在Linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。

    这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。

     

    events

    {

    use epoll;

    #使用epoll的I/O 模型。linux建议epoll,FreeBSD建议采用kqueue,window下不指定。

    补充说明:

    与apache相类,nginx针对不同的操作系统,有不同的事件模型

    A)标准事件模型

    Select、poll属于标准事件模型,如果当前系统不存在更有效的方法,nginx会选择select或poll

    B)高效事件模型

    Kqueue:使用于FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X.使用双处理器的MacOS X系统使用kqueue可能会造成内核崩溃。

    Epoll:使用于Linux内核2.6版本及以后的系统。

    /dev/poll:使用于Solaris 7 11/99+,HP/UX 11.22+ (eventport),IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+。

    Eventport:使用于Solaris 10。 为了防止出现内核崩溃的问题, 有必要安装安全补丁。

     

    worker_connections 204800;

    #每个工作进程的最大连接数量。根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为。worker_processes*worker_connections

    keepalive_timeout 60;

    #keepalive超时时间。

     

    client_header_buffer_size 4k;

    #客户端请求头部的缓冲区大小。这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。

    分页大小可以用命令getconf PAGESIZE 取得。

    [root@web001 ~]# getconf PAGESIZE

    4096

    但也有client_header_buffer_size超过4k的情况,但是client_header_buffer_size该值必须设置为“系统分页大小”的整倍数。

     

    open_file_cache max=65535 inactive=60s;

    #这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。

     

    open_file_cache_valid 80s;

    #这个是指多长时间检查一次缓存的有效信息。

     

    open_file_cache_min_uses 1;

    #open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive时间内一次没被使用,它将被移除。

    }

     

     

    ##设定http服务器,利用它的反向代理功能提供负载均衡支持

    http

    {

    include mime.types;

    #设定mime类型,类型由mime.type文件定义

     

    default_type application/octet-stream;

     

    log_format main '$remote_addr - $remote_user [$time_local] "$request" '

    '$status $body_bytes_sent "$http_referer" '

    '"$http_user_agent" "$http_x_forwarded_for"';

    log_format log404 '$status [$time_local] $remote_addr $host$request_uri $sent_http_location';

    #日志格式设置。

    $remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;

    $remote_user:用来记录客户端用户名称;

    $time_local: 用来记录访问时间与时区;

    $request: 用来记录请求的url与http协议;

    $status: 用来记录请求状态;成功是200,

    $body_bytes_sent :记录发送给客户端文件主体内容大小;

    $http_referer:用来记录从那个页面链接访问过来的;

    $http_user_agent:记录客户浏览器的相关信息;

    通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。

     

    access_log  logs/host.access.log  main;

    access_log  logs/host.access.404.log  log404;

    #用了log_format指令设置了日志格式之后,需要用access_log指令指定日志文件的存放路径;

     

    server_names_hash_bucket_size 128;

    #保存服务器名字的hash表是由指令server_names_hash_max_size 和server_names_hash_bucket_size所控制的。参数hash bucket size总是等于hash表的大小,并且是一路处理器缓存大小的倍数。在减少了在内存中的存取次数后,使在处理器中加速查找hash表键值成为可能。如果hash bucket size等于一路处理器缓存的大小,那么在查找键的时候,最坏的情况下在内存中查找的次数为2。第一次是确定存储单元的地址,第二次是在存储单元中查找键 值。因此,如果Nginx给出需要增大hash max size 或 hash bucket size的提示,那么首要的是增大前一个参数的大小.

     

    client_header_buffer_size 4k;

    #客户端请求头部的缓冲区大小。这个可以根据你的系统分页大小来设置,一般一个请求的头部大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得。

     

    large_client_header_buffers 8 128k;

    #客户请求头缓冲大小。nginx默认会用client_header_buffer_size这个buffer来读取header值,如果

    header过大,它会使用large_client_header_buffers来读取。

     

    open_file_cache max=102400 inactive=20s;

    #这个指令指定缓存是否启用。

    例: open_file_cache max=1000 inactive=20s; 

    open_file_cache_valid 30s; 

    open_file_cache_min_uses 2; 

    open_file_cache_errors on;

     

    open_file_cache_errors

    #语法:open_file_cache_errors on | off 默认值:open_file_cache_errors off 使用字段:http, server, location 这个指令指定是否在搜索一个文件是记录cache错误.

    open_file_cache_min_uses

    #语法:open_file_cache_min_uses number 默认值:open_file_cache_min_uses 1 使用字段:http, server, location 这个指令指定了在open_file_cache指令无效的参数中一定的时间范围内可以使用的最小文件数,如果使用更大的值,文件描述符在cache中总是打开状态.

    open_file_cache_valid

    #语法:open_file_cache_valid time 默认值:open_file_cache_valid 60 使用字段:http, server, location 这个指令指定了何时需要检查open_file_cache中缓存项目的有效信息.

     

     

    client_max_body_size 300m;

    #设定通过nginx上传文件的大小

     

    sendfile on;

    #sendfile指令指定 nginx 是否调用sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度,降低系统uptime。

     

    tcp_nopush on;

    #此选项允许或禁止使用socke的TCP_CORK的选项,此选项仅在使用sendfile的时候使用

     

    proxy_connect_timeout 90; 

    #后端服务器连接的超时时间_发起握手等候响应超时时间

     

    proxy_read_timeout 180;

    #连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)

     

    proxy_send_timeout 180;

    #后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据

     

    proxy_buffer_size 256k;

    #设置从被代理服务器读取的第一部分应答的缓冲区大小,通常情况下这部分应答中包含一个小的应答头,默认情况下这个值的大小为指令proxy_buffers中指定的一个缓冲区的大小,不过可以将其设置为更小

     

    proxy_buffers 4 256k;

    #设置用于读取应答(来自被代理服务器)的缓冲区数目和大小,默认情况也为分页大小,根据操作系统的不同可能是4k或者8k

     

    proxy_busy_buffers_size 256k;

    #proxy_busy_buffers_size是用来控制同时传输到客户 端的buffer数量的

     

    proxy_temp_file_write_size 256k;

    #设置在写入proxy_temp_path时数据的大小,预防一个工作进程在传递文件时阻塞太长

     

    proxy_temp_path /data0/proxy_temp_dir;

    #proxy_temp_path和proxy_cache_path指定的路径必须在同一分区

     

    proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;

    #设置内存缓存空间大小为200MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。

     

    keepalive_timeout 120;

    #keepalive超时时间。

     

    tcp_nodelay on;

    #启动TCP_NODELAY,就意味着禁用了Nagle算法,允许小包的发送。对于延时敏感型,同时数据传输量比较小的应用,开启TCP_NODELAY选项无疑是一个正确的选择。

     

    client_body_buffer_size 512k;

    #如果把它设置为比较大的数值,例如256k,那么,无论使用firefox还是IE浏览器,来提交任意小于256k的图片,都很正常。如果注释该指令,使用默认的client_body_buffer_size设置,也就是操作系统页面大小的两倍,8k或者16k,问题就出现了。

    无论使用firefox4.0还是IE8.0,提交一个比较大,200k左右的图片,都返回500 Internal Server Error错误

     

    proxy_intercept_errors on;

    #表示使nginx阻止HTTP应答代码为400或者更高的应答。

     

    upstream bakend {

    server 127.0.0.1:8027;

    server 127.0.0.1:8028;

    server 127.0.0.1:8029;

    hash $request_uri;

    }

    #nginx的upstream目前支持4种方式的分配

    1、轮询(默认)

    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

    2、weight

    指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

    例如:

    upstream bakend {

    server 192.168.0.14 weight=10;

    server 192.168.0.15 weight=10;

    }

    3、ip_hash

    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

    例如:

    upstream bakend {

    ip_hash;

    server 192.168.0.14:88;

    server 192.168.0.15:80;

    }

    4、fair(第三方)

    按后端服务器的响应时间来分配请求,响应时间短的优先分配。

    upstream backend {

    server server1;

    server server2;

    fair;

    }

    5、url_hash(第三方)

    按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

    例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法

    upstream backend {

    server squid1:3128;

    server squid2:3128;

    hash $request_uri;

    hash_method crc32;

    }

    tips:

    upstream bakend{#定义负载均衡设备的Ip及设备状态}{

    ip_hash;

    server 127.0.0.1:9090 down;

    server 127.0.0.1:8080 weight=2;

    server 127.0.0.1:6060;

    server 127.0.0.1:7070 backup;

    }

    在需要使用负载均衡的server中增加

    proxy_pass http://bakend/;

    每个设备的状态设置为:

    • 1.down表示单前的server暂时不参与负载
    • 2.weight为weight越大,负载的权重就越大。
    • 3.max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误
    • 4.fail_timeout:max_fails次失败后,暂停的时间。
    • 5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

    nginx支持同时设置多组的负载均衡,用来给不用的server来使用。

    client_body_in_file_only设置为On 可以讲client post过来的数据记录到文件中用来做debug

    client_body_temp_path设置记录文件的目录 可以设置最多3层目录

    location对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡

     

     

    ##配置虚拟机

    server

    {

    listen 80;

    #配置监听端口

     

    server_name image.***.com;

    #配置访问域名

     

    location ~* \.(mp3|exe)$ {

    #对以“mp3或exe”结尾的地址进行负载均衡

     

    proxy_pass http://img_relay$request_uri;

    #设置被代理服务器的端口或套接字,以及URL

     

    proxy_set_header Host $host;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    #以上三行,目的是将代理服务器收到的用户的信息传到真实服务器上

    }

     

    location /face {

    if ($http_user_agent ~* "xnp") {

    rewrite ^(.*)$ http://211.151.188.190:8080/face.jpg redirect;

    }

    proxy_pass http://img_relay$request_uri;

    proxy_set_header Host $host;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    error_page 404 502 = @fetch;

    }

    location @fetch {

    access_log /data/logs/face.log log404;

    rewrite ^(.*)$ http://211.151.188.190:8080/face.jpg redirect;

    }

    location /image {

    if ($http_user_agent ~* "xnp") {

    rewrite ^(.*)$ http://211.151.188.190:8080/face.jpg redirect;

    }

    proxy_pass http://img_relay$request_uri;

    proxy_set_header Host $host;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    error_page 404 502 = @fetch;

    }

    location @fetch {

    access_log /data/logs/image.log log404;

    rewrite ^(.*)$ http://211.151.188.190:8080/face.jpg redirect;

    }

    }

     

    注释:变量

    Ngx_http_core_module模块支持内置变量,他们的名字和apache的内置变量是一致的。

    首先是说明客户请求title中的行,例如$http_user_agent,$http_cookie等等。

    此外还有其它的一些变量

    $args此变量与请求行中的参数相等

    $content_length等于请求行的“Content_Length”的值。

    $content_type等同与请求头部的”Content_Type”的值

    $document_root等同于当前请求的root指令指定的值

    $document_uri与$uri一样

    $host与请求头部中“Host”行指定的值或是request到达的server的名字(没有Host行)一样

    $limit_rate允许限制的连接速率

    $request_method等同于request的method,通常是“GET”或“POST”

    $remote_addr客户端ip

    $remote_port客户端port

    $remote_user等同于用户名,由ngx_http_auth_basic_module认证

    $request_filename当前请求的文件的路径名,由root或alias和URI request组合而成

    $request_body_file

    $request_uri含有参数的完整的初始URI

    $query_string与$args一样

    $sheeme http模式(http,https)尽在要求是评估例如

    Rewrite ^(.+)$ $sheme://example.com$; Redirect;

    $server_protocol等同于request的协议,使用“HTTP/或“HTTP/

    $server_addr request到达的server的ip,一般获得此变量的值的目的是进行系统调用。为了避免系统调用,有必要在listen指令中指明ip,并使用bind参数。

    $server_name请求到达的服务器名

    $server_port请求到达的服务器的端口号

    $uri等同于当前request中的URI,可不同于初始值,例如内部重定向时或使用index

     


    2.3 Nginx常用操作

    常用到的命令如下:

    • nginx -s stop :快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。

    • nginx -s quit :平稳关闭Nginx,保存相关信息,有安排的结束web服务。

    • nginx -s reload :因改变了Nginx相关配置,需要重新加载配置而重载。

    • nginx -s reopen :重新打开日志文件。

    • nginx -c filename :为 Nginx 指定一个配置文件,来代替缺省的。

    • nginx -t :不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。

    • nginx -v:显示 nginx 的版本。

    • nginx -V:显示 nginx 的版本,编译器版本和配置参数。

    • sudo service nginx status :查看nginx运行状态

    • sudo service nginx restart:重启

    • pkill -9 nginx:杀掉nginx运行进程


    3.Nginx工作原理

    首先,我们通过一个内部结构流程图来熟悉一下Nginx的工作流程:

    3.1 工作原理:

    Nginx真正处理请求业务的是Worker之下的线程。worker 进程中,ngx_worker_process_cycle()函数就是这个无限循环的处理函数。在这个函数中,一个请求的简单处理流程如下:

    1. 操作系统提供的机制(例如 epoll, kqueue 等)产生相关的事件。
    2. 接收和处理这些事件,如是接收到数据,则产生更高层的 request 对象。
    3. 处理 request 的 header 和 body。
    4. 产生响应,并发送回客户端。
    5. 完成 request 的处理。
    6. 重新初始化定时器及其他事件。

    3.1.1 Nginx处理Request请求过程解析

    下面我们结合一个请求流程来理解一下Nginx整个过程当中做了哪些事。从 Nginx 的内部来看,一个 HTTP Request 的处理过程涉及到以下几个阶段:

    1. 初始化 HTTP Request(读取来自客户端的数据,生成 HTTP Request 对象,该对象含有该请求所有的信息)。
    2. 处理请求头。
    3. 处理请求体。
    4. 如果有的话,调用与此请求(URL 或者 Location)关联的 handler。
    5. 依次调用各 phase handler 进行处理。

    我们再通过一个流程图看看处理过程:

    根据注释,我们可以看到:

    • Nginx启动后,首先会根据配置与对应的客户端进行初始化连接。
    • 而当一个Request进入后,先是对请求头及请求体进行解析和处理。
    • 处理过程中,通过请求头找到对应的server config,然后与真实服务器进行连接并进行读写事件处理。
    • 最后我们会看到有多个phase handler,就是包含若干个处理阶段的一些 handler。一个 phase handler 对这个 request 进行处理,并产生一些输出。通常 phase handler 是与定义在配置文件中的某个 location 相关联的
    • 一个通常会做一下处理:
    1. 获取 location 配置。
    2. 产生适当的响应。
    3. 发送 response header。
    4. 发送 response body。

    3.1.2 一个完整的Request请求流程

    3.2 keepalive 长连接

    在nginx中,对于http1.0与http1.1也是支持长连接的。

    什么是长连接呢?我们知道,http请求是基于TCP协议之上的,那么,当客户端在发起请求前,需要先与服务端建立TCP连接,而每一次的TCP连接是需要三次握手来确定的,如果客户端与服务端之间网络差一点,这三次交互消费的时间会比较多,而且三次交互也会带来网络流量。当然,当连接断开后,也会有四次的交互,当然对用户体验来说就不重要了。而http请求是请求应答式的,如果我们能知道每个请求头与响应体的长度,那么我们是可以在一个连接上面执行多个请求的,这就是所谓的长连接,但前提条件是我们先得确定请求头与响应体的长度。

    对于请求来说,如果当前请求需要有body,如POST请求,那么nginx就需要客户端在请求头中指定content-length来表明body的大小,否则返回400错误。也就是说,请求体的长度是确定的,那么响应体的长度呢?先来看看http协议中关于响应body长度的确定:

    对于http1.0协议来说,如果响应头中有content-length头,则以content-length的长度就可以知道body的长度了,客户端在接收body时,就可以依照这个长度来接收数据,接收完后,就表示这个请求完成了。而如果没有content-length头,则客户端会一直接收数据,直到服务端主动断开连接,才表示body接收完了。

    而对于http1.1协议来说,如果响应头中的Transfer-encoding为chunked传输,则表示body是流式输出,body会被分成多个块,每块的开始会标识出当前块的长度,此时,body不需要通过长度来指定。如果是非chunked传输,而且有content-length,则按照content-length来接收数据。否则,如果是非chunked,并且没有content-length,则客户端接收数据,直到服务端主动断开连接。

    从上面,我们可以看到,除了http1.0不带content-length以及http1.1非chunked不带content-length外,body的长度是可知的。此时,当服务端在输出完body之后,会可以考虑使用长连接。能否使用长连接,也是有条件限制的。如果客户端的请求头中的connection为close,则表示客户端需要关掉长连接,如果为keep-alive,则客户端需要打开长连接,如果客户端的请求中没有connection这个头,那么根据协议,如果是http1.0,则默认为close,如果是http1.1,则默认为keep-alive。如果结果为keepalive,那么,nginx在输出完响应体后,会设置当前连接的keepalive属性,然后等待客户端下一次请求。

    当然,nginx不可能一直等待下去,如果客户端一直不发数据过来,岂不是一直占用这个连接?所以当nginx设置了keepalive等待下一次的请求时,同时也会设置一个最大等待时间,这个时间是通过选项keepalive_timeout来配置的,如果配置为0,则表示关掉keepalive,此时,http版本无论是1.1还是1.0,客户端的connection不管是close还是keepalive,都会强制为close。

    如果服务端最后的决定是keepalive打开,那么在响应的http头里面,也会包含有connection头域,其值是”Keep-Alive”,否则就是”Close”。如果connection值为close,那么在nginx响应完数据后,会主动关掉连接。所以,对于请求量比较大的nginx来说,关掉keepalive最后会产生比较多的time-wait状态的socket。一般来说,当客户端的一次访问,需要多次访问同一个server时,打开keepalive的优势非常大,比如图片服务器,通常一个网页会包含很多个图片。打开keepalive也会大量减少time-wait的数量。

     

    本博客皆为学习、分享、探讨为本,欢迎各位朋友评论、点赞、收藏、关注,一起加油!

     

    展开全文
  • centOS7安装nginx及nginx配置

    万次阅读 多人点赞 2019-05-09 14:59:19
    6、配置nginx配置文件nginx.conf文件,主要也就是端口 可以按照自己服务器的端口使用情况来进行配置 ESC键,wq!强制保存并退出 7、启动nginx服务 切换目录到/usr/local/nginx/sbin下面 启动...
  • Nginx 配置 HTTPS 完整过程

    万次阅读 多人点赞 2018-11-26 10:06:06
    配置站点使用 https,并且将 http 重定向至 https。 1. nginx 的 ssl 模块安装 查看 nginx 是否安装 http_ssl_module 模块。 $ /usr/local/nginx/sbin/nginx -V ![在这里插入图片描述]...
  • nginx配置文件

    千次阅读 2020-09-27 00:19:14
    nginx配置文件结构 main events(...) http{ server { location {...} } } 从上面的描述分为5个模块: main,events,http,server,location. 模块 描述 main 配置nginx的子进程数,子进程优先级,以及子...
  • 关于nginx配置简单实例-nginx配置反向代理和跳转,很有用。
  • nginx配置详解 (附例子)

    万次阅读 2020-12-10 15:47:59
    nginx配置 #运行用户 user www-data; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; #工作模式及连接数上限 ...
  • nginx配置Jupyter

    千次阅读 2020-10-23 17:17:27
    nginx配置: server { server_name ; # 服务器域名和 IP 地址 listen 80; # 监听端口 ... ... location / { proxy_pass http://127.0.0.1:jupyter的端口号/; proxy_set_header X-Real-IP $remote_addr; ...
  • nginx配置https服务

    万次阅读 2019-06-22 14:27:14
    nginx配置https服务
  • nginx配置路径

    千次阅读 2019-06-25 11:25:26
    Nginx配置proxy_pass转发的/路径问题 Nginx配置proxy_pass转发的/路径问题 在nginx中配置proxy_pass时,如果是按照^~匹配路径时,要注意proxy_pass后的url最后的/,当加上了/,相当于是绝对根路径,则nginx不会把...
  • 【Nginx】Nginx配置SSL证书

    万次阅读 热门讨论 2018-05-24 16:42:44
    通过修改简单的Nginx配置文件来实现SSL证书的加持,使得我们的应用程序支持HTTPS访问协议。 首先,搞到SSL证书 付费的话就很多选项,我就简单介绍一下免费的吧。 免费的SSL证书都是针对单一域名,比如baofeidyz....
  • 使用nginx配置二级域名

    万次阅读 2018-11-21 11:39:24
    最近想把三个项目配在一个服务器上,于是想使用nginx配置二级域名实现。 1.域名添加解析 我的是阿里云的域名,所以首先给自己的域名添加解析。 打算使用 www.codeliu.com , test1.codeliu.com, test2.codeliu.com这...
  • 前端nginx配置并且同一域名配置多个项目前端nginx配置并且同一域名配置多个项目first of all下载配置nginx配置nginx开机自启动nginx -t 找不到nginx的修复nginx进行重启Nginx同一个域名配置多个项目nginx按不同的...
  • Nginx配置-初始Nginx配置文件

    万次阅读 2018-04-22 21:28:34
    1.配置文件的结构安装完nginx之后,可以安装路径下找到一个conf目录,nginx.conf就是一个最简单的配置文件。这个文件虽然简单,但是“麻雀虽小,五脏俱全“,那我们就从这里开始吧!#user nobody; worker_processes ...
  • nginx配置CORS实现跨域

    万次阅读 2018-05-16 14:53:33
    之前项目中遇到过几次跨域访问,通过百度或谷歌查询在nginx配置相关header予以解决,若不管用就没其他办法了;从来没有真正深入了解过,下面我们就来认识下CORS及在nginx中如何配置。 CORS CORS是一个W3C标准,...
  • nginx配置GeoIP

    千次阅读 2018-04-20 18:00:03
    由于之前没有接触过服务器,配置这个耗费了我好长时间nginx 配置GeoIP实现不同国家访问不同的URL首先要确保nginx已经配置了GeoIP模块,如果没有那就先来配置GeoIP找到nginx源码目录下进行/.configure --user=...
  • nginx 配置phpmyadmin

    千次阅读 2018-05-14 11:28:03
    下载 phpadmin 下载下来是一个zip文件,解压到特定目录,并重新...nginx配置文件 vim /usr/local/etc/nginx/servers/localhost-php-myadmin.conf 配置文件内容: server { listen 2234;#监听的端口 server...
  • docker中安装的nginx,使用的是嵌套式的nginx配置,即主配置在/etc/nginx/nginx.conf中,然而平时用到的server配置在/etc/nginx/conf.d中两个配置文件如下: nginx.conf user nginx; worker_processes 1; error...
  • Nginx 配置TCP代理转发

    万次阅读 2019-02-21 16:21:03
    Nginx 配置TCP代理转发 使用Nginx 新版的 stream方式,实现TCP/UDP代理转发。 在Nginx安装了 stream 模块后。 修改nginx.conf 在主配置文件下 nginx.conf 增加 stream配置。 如 nginx home 为 /opt/software/nginx ...
  • Nginx配置安全访问

    千次阅读 2020-02-09 16:21:59
    Nginx配置安全访问1. Nginx介绍及下载资源2. Nginx安装2.1 在Windows下安装2.2 在Liunx下安装2.3 检测是否已安装3. 安全访问介绍4. 安全访问配置4.1 正式证书及域名安全访问配置4.2 局域网下安全访问配置 1. Nginx...
  • Nginx配置正向代理支持HTTP和HTTPS转发

    万次阅读 2019-05-20 15:25:04
    文章目录Nginx配置正向代理支持HTTP和HTTPS转发安装编译环境和工具安装Nginx和ngx_http_proxy_connect_module模块修改Nginx配置文件启动Nginx查看端口打开防火墙测试代理 Nginx配置正向代理支持HTTP和HTTPS转发 ...
  • Nginx配置——反向代理

    千次阅读 2019-10-11 19:16:27
    Nginx配置——反向代理
  • nginx配置负载均衡策略demo

    千次阅读 2021-02-22 22:49:47
    nginx配置负载均衡策略demo 需求:当我们在浏览器输入http://118.31.3.xxx/test/a.html分别从不同的服务器去访问 首先在nginx http块中加上upstream配置,配置如下 upstream myserver { server 118.31.3....
  • Nginx指南 - 检验Nginx配置文件语法是否可用 // 使用nginx -t 命令检验配置文件的语法是否可用 nginx -t // 如果语法不可用,nginx会反馈大致的原因以及错误在哪一行。 // 比如一个错误 nginx: [emerg] invalid...
  • nginx配置API接口

    千次阅读 2020-04-23 13:31:40
    目录引言nginx 配置API接口1.api配置上下文2.配置nginx.conf3.去测试 引言 今天上午利用上班时间摸了个鱼(其实工作已经完成的差不多了。。。至少我是这么觉得),于是自己照着杏子姐的博客写了个springboot的服务。...
  • nginx配置代理服务器

    千次阅读 2019-05-29 20:37:44
    nginx安装参照:linux环境下安装nginx 修改nginx配置文件 nginx.conf: ... location /api { proxy_pass http://www.nginx.cn/; } ... 启动nginx后,访问http://192.168.154.131/api效果: ...
  • nginx配置时,用原来再另外一个服务器上做的配置,完全一模一样的照搬过来,unknown directive " " in /etc/nginx/conf.d/xwmh-9006.conf:2 这就让我很疑惑了,于是在网上各种百度,总算看到一个哥子给了很好的解决...
  • Nginx 配置生成工具

    千次阅读 2019-01-03 17:17:02
    实用的 Nginx 配置生成工具: NginxConfig.io https://nginxconfig.io/ 谁用谁知道!!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 124,403
精华内容 49,761
关键字:

nginx配置