• Nginx初探


    nginx是一款轻量级的web服务器、反向代理服务器和电子邮件服务器,占有内存少,并发能力强。

    本文将简单介绍如何安装、启动nginx,部署web项目,应用反向代理。

    一、安装

    可参考https://www.cnblogs.com/EasonJim/p/7806879.html

    二、常用命令

    nginx -s stop 快速关闭

    nginx -s quit 等待当前请求执行完毕后关闭

    nginx -s reload 重新加载配置

    nginx -s reopen 重新打开日志(完成日志切割)

    三、常用配置

    参考https://blog.csdn.net/xyang81/article/details/51814787

      3.1http简要配置

        极简的情况下,http可以只配置server,即:

        

    http {
        server {}
        server {}  
    }
    

        其他关于http的配置比如include(用于将外部文件的内容作为配置拷贝到配置文件中)、sendfile(是否启用内核复制)等,可参考上面提到的链接或ngnix官方文档。

      3.2server简要配置

        server的配置中比较重要的有三项:listen,server_name和location。

        listen指令配置了虚拟主机监听的ip地址和端口,默认监听本机地址和80端口。

          server_name指令配置了虚拟主机的域名。

        location指定配置了客户端请求服务器的url地址匹配规则。

        例如,以下server配置:

    server {
        listen 192.168.100.1:8080;
        server_name test.com;
    }
    
    server {
        listen 192.168.100.1:8081;
        server_name test.cn
    }
    
    server {    
    listen 192.168.100.1:8081 default_server;
       server_name test.com.cn
    }

        首先,nginx将根据server_name来路由请求,比如请求test.com.cn的请求将被路由到server3。

        如果没找到对应的server_name,将根据监听的端口号将请求路由到默认的server,即对应了default_server配置。如果没有显式配置,则对应端口的第一个server将作为默认server。

        例如,如果有一个来自8081端口请求了test.org的url,将会被路由到server3。如果server3没有default_server端口,则它将被路由到server2。

        3.2.1server_name

          server_name接受完整的域名、通配符和正则表达式,也可以配置ip。需要注意的是,通配符*只能出现在开头或结尾,test.*.com这样的域名是非法的。

          正则表达式遵守对应的正则表达式规则,有一个特殊的地方为,包含{}的正则表达式需要用""引用。

          配置文件中配置的完整域名和通配符域名将存储在对应的hash中,而正则表达式按顺序搜索。

          server_name的搜索顺序为:完整域名>通配符在前的域名>通配符在后的域名>正则表达式域名。为了提高效率,应该尽量使用完整域名。

          在域名过长时,nginx可能无法正确建立hash表。此时可以通过http配置中的server_names_hash_max_size进行配置。如果修改该配置依然无效,则可以考虑修改server_names_hash_bucket_size

      3.3location简要配置

        一个简单的location配置可能包含root和index配置,如下:

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

        /表示匹配任何请求url。此处可接受正则表达式,如~.(gif|jpg|png)$表示匹配以.gif或.jpg或.png结尾的url。

        nginx优先匹配更精确的location块,只有当找不到匹配项时,才会匹配以/标注的location块。在按正则匹配location时,将根据在配置文件中出现的顺序匹配。

        root指令配置了根目录,此配置将会和location匹配到的url一起生成访问本地文件系统内容的地址。例如,上述配置将生成html/。

        index指令配置了默认的处理页,当请求url没有匹配任何location块时,将会被默认重定向到html/index.html。

        此外,location块还可以配置proxy。

    四、部署web项目

      在nginx上部署一个web项目非常简单,参考上述配置,将root指向对应的web项目目录即可。

      4.1反向代理

        在前后端分离的项目中,可以使用nginx的反向代理功能来解决跨域问题。

        反向代理的配置也非常简单,就是location指令块中的proxy_pass指令。如下:

    location ~/cityflag/ {
            default_type application/json;
            proxy_pass http://localhost:8080;
        }
    

        以上配置就将对应的请求发送到了localshot:8080。

    五、负载均衡

      nginx提供负载均衡功能,可以通过简单的配置将请求分发到不同的服务器上,以提高性能、可用性等。

      nginx提供三种简单的负载均衡方式,轮询、最少链接和ip_hash,其中轮询为默认方式,其余分别用least_conn;和ip_hash;来标识。

      同时还可以通过指定server的权重来对负载均衡进行调整。

      下面是一个简单的配置例子:

    http{
        upstream myapp {
    		server localhost:8383 weight=2;
    		server localhost:9999;
    	}
        server {
    	listen 9999 default_server;
    	server_name  myhost.com;
            root   html;
        
            location / {
                root html;
                index index.html;    
            }
    		
            location ~/cityflag/ {
                default_type application/json;
                proxy_pass http://myapp;
            }
        }
    }
    

      这样每三个请求中将有两个请求发送到server1,一个请求发送到server2。

  • 相关阅读:
    ide 安装eval reset插件 Pycharm 永久破解
    Centos7.9安装RabbitMQ
    Linux环境下安装Centos7.9时没有图形界面的解决办法
    JS,对部分值base64解码
    consul 配置备份
    AutoMapper后遇到的“Missing map”与“Missing type map configuration”问题
    osg绘制圆柱体
    IfcFlowMovingDevice
    opencv absdiff
    IfcFlowMovingDeviceType
  • 原文地址:https://www.cnblogs.com/ryzblog76/p/8797402.html
Copyright © 2020-2023  润新知