zoukankan      html  css  js  c++  java
  • Nginx 的简单使用 (IIS,Asp.Net)

    Nginx 的一些常见功能(windows,AspNet ,IIS

    下载

    官方网站:https://nginx.org/en/download.html

     

    下载,解压缩是这个样子

     

    启动:

    启动方式有两种

    方式一:双击nginx.exe

    方式二:进入cmd 到该目录下,运行 start nginx

     

    启动闪退,查看错误日志,原因是80端口已经被占用了,所以我们找到nginx.conf文件,换了一个监听的端口8085

     

    错误日志文件

     

    ,再次启动,启动成功,启动成功。发现多了一个nginx.pid文件,在浏览器里面访问localhost:8035

     

    这个样子就是成功了

    这里是日志文件

    记录了每次请求

     

    接下来,我们做第一个nginx常用的功能:

    使用ngxix负载均衡

    把请求分散到多个主机

    这里我们新建了一个aspnetmvc项目,功能很简单,

     

    发布之后,复制两个一样的文件夹,只改动web。Config里面的serverid。分别部署到8001端口,8002端口

    8001的配置文件

     

    8002的配置文件

     

    Serverid 1

     

    Serverid 2

     

    我们的目标是:访问8035端口时,将请求通过nginx转到8001和8002

    配置前:

    8085

     

    8001

    8002

     

    开始配置

    1,在server节点上面加入 upstream节点,起个名字 my_web_server,

    在大括号里面加入要映射的地址,格式是 server + 地址 +权重,权重越高,访问越多

    2,修改server节点,里面的server_name 和上面保持一致

    3,修改 location 节点 名字也要和上面保持一致

     

    齐活。

    保存配置文件,在cmd中重启nginx配置文件

    重启命令 nginx –s reload

    然后我们再去访问8085 ,配置成功

     

     

    可以看到一次1,一次二,目前是两个不加任何策略配置

    接下来我们加上ip_hash 的策略

      

    接着访问多次8085

    ,发现他只会映射到8001上面去,这个就是ip_hash策略的作用:根据不通ip的哈希值,指定到固定端口上面去,ip_hash是很常用的一种策略,可以解决一点点的session不共享问题

     

    其他的几种策略这里不再赘述,

    可以去看看这里 https://blog.csdn.net/balalamm/article/details/79916483

    使用nginx代理二级目录

    我们经常会遇到这样的 结构

    比如说这是某个应用的接口地址http://api.example.com/,他有v1和v2两个版本

    放在不同的服务器或者端口上,我们想使用下面的url来请求

    http://api.example.com/v1/  和  http://api.example.com/v2/

    这时候我们就可以是用nginx来处理

    我们的目标是

    请求   http://localhost:8085/v1/    转到8001端口

    请求   http://localhost:8085/v2/      转到8002端口

    修改配置文件,这里暂时用不到upstream 节点了

    修改成这个样子

     

    加一个location 就行,是不是很简单,注意8001/后面的斜杠 /一定不能少

     

    效果图  v1/

     

    V2/

     

    Nginx的功能是十分强大,以上只是基础,其他的功能比如:使用nginx防盗链,请求日志记录,拦截请求等等,使用nginx实现要比在应用程序中实现简单快捷很多,总而言之就是nginx很有学习的必要。

     

    附录:nginx常量对照表(原文 https://blog.csdn.net/echizao1839/article/details/80872378

     

    $http_user_agent, $http_cookie, 等等。下面是nginx支持的所有内置变量:

    $arg_name:请求中的的参数名,即“?”后面的arg_name=arg_value形式的arg_name

    $args:请求中的参数值

    $binary_remote_addr:客户端地址的二进制形式, 固定长度为4个字节

    $body_bytes_sent:传输给客户端的字节数,响应头不计算在内;这个变量和Apache的mod_log_config模块中的“%B”参数保持兼容

    $bytes_sent:传输给客户端的字节数 (1.3.8, 1.2.5)

    $connection:TCP连接的序列号 (1.3.8, 1.2.5)

    $connection_requests:TCP连接当前的请求数量 (1.3.8, 1.2.5)

    $content_length:“Content-Length请求头字段

    $content_type:“Content-Type请求头字段

    $cookie_name:cookie名称

    $document_root:当前请求的文档根目录或别名

    $document_uri:同 $uri

    $host:优先级如下:HTTP请求行的主机名>”HOST”请求头字段>符合请求的服务器名

    $hostname:主机名

    $http_name:匹配任意请求头字段; 变量名中的后半部分“name”可以替换成任意请求头字段,如在配置文件中需要获取http请求头:“Accept-Language”,那么将“-”替换为下划线,大写字母替换为小写,形如:$http_accept_language即可。

    $https:如果开启了SSL安全模式,值为“on”,否则为空字符串。

    $is_args:如果请求中有参数,值为“?”,否则为空字符串。

    $limit_rate:用于设置响应的速度限制,详见 limit_rate

    $msec:当前的Unix时间戳 (1.3.9, 1.2.6)

    $nginx_version:nginx版本

    $pid:工作进程的PID

    $pipe:如果请求来自管道通信,值为“p”,否则为“.” (1.3.12, 1.2.7)

    $proxy_protocol_addr:获取代理访问服务器的客户端地址,如果是直接访问,该值为空字符串。(1.5.12)

    $query_string:同 $args

    $realpath_root:当前请求的文档根目录或别名的真实路径,会将所有符号连接转换为真实路径。

    $remote_addr:客户端地址

    $remote_port:客户端端口

    $remote_user:用于HTTP基础认证服务的用户名

    $request:代表客户端的请求地址

    $request_body:客户端的请求主体,此变量可在location中使用,将请求主体通过proxy_pass, fastcgi_pass, uwsgi_pass, 和 scgi_pass传递给下一级的代理服务器。

    $request_body_file:将客户端请求主体保存在临时文件中。文件处理结束后,此文件需删除。如果需要之一开启此功能,需要设置client_body_in_file_only。如果将次文件传递给后端的代理服务器,需要禁用request body,即设置proxy_pass_request_body off,fastcgi_pass_request_body off, uwsgi_pass_request_body off, or scgi_pass_request_body off

    $request_completion:如果请求成功,值为”OK”,如果请求未完成或者请求不是一个范围请求的最后一部分,则为空。

    $request_filename:当前连接请求的文件路径,由root或alias指令与URI请求生成。

    $request_length:请求的长度 (包括请求的地址, http请求头和请求主体) (1.3.12, 1.2.7)

    $request_method:HTTP请求方法,通常为“GET”或“POST

    $request_time:处理客户端请求使用的时间 (1.3.9, 1.2.6); 从读取客户端的第一个字节开始计时。

    $request_uri:这个变量等于包含一些客户端请求参数的原始URI,它无法修改,请查看$uri更改或重写URI,不包含主机名,例如:”/cnphp/test.php?arg=freemouse”。

    $scheme:请求使用的Web协议, “http“https

    $sent_http_name:可以设置任意http响应头字段; 变量名中的后半部分“name”可以替换成任意响应头字段,如需要设置响应头Content-length,那么将“-”替换为下划线,大写字母替换为小写,形如:$sent_http_content_length 4096即可。

    $server_addr:服务器端地址,需要注意的是:为了避免访问linux系统内核,应将ip地址提前设置在配置文件中。

    $server_name:服务器名,www.cnphp.info

    $server_port:服务器端口

    $server_protocol:服务器的HTTP版本, 通常为 “HTTP/1.0“HTTP/1.1

    $status:HTTP响应代码 (1.3.2, 1.2.2)

    $tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd, $tcpinfo_rcv_space:客户端TCP连接的具体信息

    $time_iso8601:服务器时间的ISO 8610格式 (1.3.12, 1.2.7)

    $time_local:服务器时间(LOG Format 格式) (1.3.12, 1.2.7)

    $uri:请求中的当前URI(不带请求参数,参数位于$args),可以不同于浏览器传递的$request_uri的值,它可以通过内部重定向,或者使用index指令进行修改,$uri不包含主机名,如”/foo/bar.html”。

     

  • 相关阅读:
    zoj 1239 Hanoi Tower Troubles Again!
    zoj 1221 Risk
    uva 10192 Vacation
    uva 10066 The Twin Towers
    uva 531 Compromise
    uva 103 Stacking Boxes
    稳定婚姻模型
    Ants UVA
    Golden Tiger Claw UVA
    关于upper、lower bound 的探讨
  • 原文地址:https://www.cnblogs.com/jimsfriend/p/11277629.html
Copyright © 2011-2022 走看看