windows下nginx的安装及使用

一、Nginx的安装(Windows)

1.下载nginx
http://nginx.org/en/download.html
选择第二个版本
nginx
下载后直接解压:
nginx
2.启动nginx

有很多种方法启动nginx

(1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过

(2)打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe 或者 start nginx ,回车即可

3.检查nginx是否启动成功

直接在浏览器地址栏输入网址 http://localhost:80,回车,出现以下页面说明启动成功
nginx
也可以在cmd命令窗口输入命令 tasklist /fi “imagename eq nginx.exe” ,出现如下结果说明启动成功
在这里插入图片描述
nginx的配置文件是conf目录下的nginx.conf,默认配置的nginx监听的端口为80,如果80端口被占用可以修改为未被占用的端口即可。
检查80端口是否被占用的命令是: netstat -ano | findstr 0.0.0.0:80 或 netstat -ano | findstr “80”

杀死进程:taskkill/pid 进程号 -f
在这里插入图片描述

当我们修改了nginx的配置文件nginx.conf 时,不需要关闭nginx后重新启动nginx,只需要执行命令 nginx -s reload 即可让改动生效

4.关闭nginx

如果使用cmd命令窗口启动nginx,关闭cmd窗口是不能结束nginx进程的,可使用两种方法关闭nginx

(1)输入nginx命令 nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx)

(2)使用taskkill taskkill /f /t /im nginx.exe

5.使用nginx代理服务器做负载均衡

我们可以修改nginx的配置文件nginx.conf 达到访问nginx代理服务器时跳转到指定服务器的目的,即通过proxy_pass 配置请求转发地址,即当我们依然输入http://localhost:8011 时,请求会跳转到我们配置的服务器。
同理,我们可以配置多个目标服务器,当一台服务器出现故障时,nginx能将请求自动转向另一台服务器,例如配置如下:
当服务器 localhost:8080 挂掉时,nginxnginx能将请求自动转向服务器 localhost:8081 。

6.nginx配置静态资源

将静态资源(如jpg|png|css|js等)放在如下配置的D:/dbcp/display_fe/dist目录下,然后在nginx配置文件中做如下配置(注意:静态资源配置只能放在 location / 中),浏览器中访问 http://localhost:8011/1.png 即可访问到D:/dbcp/display_fe/dist目录下的 1.png图片

    upstream tomcat_server{
    		server localhost:8080 weight=2;
    		server localhost:8081 weight=1;
    }
    server {
        listen 8011;
        server_name localhost;
        #access_log  /usr/local/nginx/logs/local_dbcp-test.log;  #main;
        location / {
                    root  D:/dbcp/display_fe/dist;
                    index /index.html;
        }
        location /api/{
                    proxy_pass  http://tomcat_server;
        }
        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

在这里插入图片描述
7.nignx配置
worker_processes 8; 工作进程个数
worker_connections 65535; 每个工作进程能并发处理(发起)的最大连接数(包含所有连接数)
error_log /data/logs/nginx/error.log; 错误日志打印地址
access_log /data/logs/nginx/access.log 进入日志打印地址
log_format main ‘ r e m o t e a d d r " remote_addr" remoteaddr"request" ‘’$status u p s t r e a m a d d r " upstream_addr " upstreamaddr"request_time"’; 进入日志格式

fastcgi_connect_timeout=300; #连接到后端fastcgi超时时间
fastcgi_send_timeout=300; #向fastcgi请求超时时间(这个指定值已经完成两次握手后向fastcgi传送请求的超时时间)
fastcgi_rend_timeout=300; #接收fastcgi应答超时时间,同理也是2次握手后
fastcgi_buffer_size=64k; #读取fastcgi应答第一部分需要多大缓冲区,该值表示使用1个64kb的缓冲区读取应答第一部分(应答头),可以设置为fastcgi_buffers选项缓冲区大小
fastcgi_buffers 4 64k;#指定本地需要多少和多大的缓冲区来缓冲fastcgi应答请求,假设一个php或java脚本所产生页面大小为256kb,那么会为其分配4个64kb的缓冲来缓存
fastcgi_cache TEST;#开启fastcgi缓存并为其指定为TEST名称,降低cpu负载,防止502错误发生

listen 80; 监听端口
server_name rrc.test.jiedaibao.com; 允许域名
root /data/release/rrc/web; 项目根目录
index index.php index.html index.htm; 访问根文件

二、原理

1.负载均衡算法
(1)round-robin:轮询算法(默认)
(2)least-connected:最少连接,即每次都找连接数最少的服务器来转发请求。

upstream app1 {
    least_conn;
    server 10.10.10.1;
    server 10.10.10.2;
}

(3)ip-hash:每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的session共享问题。

upstream app1 {
    ip_hash;
    server 10.10.10.1;
    server 10.10.10.2;
}

(4)weighted:权重算法
(5)fair(第三方插件):对比 weight、ip_hash更加智能的负载均衡算法,fair算法可以根据页面大小和加载时间长短智能地进行负载均衡,响应时间短的优先分配。

upstream app1 {
    server 10.10.10.1;
    server 10.10.10.2;
    fair; 
}

(6)url_hash(第三方插件)
必须安装Nginx的hash软件包
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。

upstream app1 {
    server 10.10.10.1;
    server 10.10.10.2;
    hash $request_uri; 
    hash_method crc32; 
}

2.Nginx和Apache区别
Apache: 创建多个进程或线程,而每个进程或线程都会为其分配cpu和内存(线程要比进程小的多,所以worker支持比perfork高的并发),并发过大会榨干服务器资源。

Nginx: 采用单线程来异步非阻塞处理请求(管理员可以配置Nginx主进程的工作进程的数量)(epoll),不会为每个请求分配cpu和内存资源,节省了大量资源,同时也减少了大量的CPU的上下文切换。所以才使得Nginx支持更高的并发。

3.nginx是如何实现高并发的
一个主进程,多个工作进程,每个工作进程可以处理多个请求
每进来一个request,会有一个worker进程去处理。但不是全程的处理,处理到可能发生阻塞的地方,比如向上游(后端)服务器转发request,并等待请求返回。那么,这个处理的worker继续处理其他请求,而一旦上游服务器返回了,就会触发这个事件,worker才会来接手,这个request才会接着往下走。
由于web server的工作性质决定了每个request的大部份生命都是在网络传输中,实际上花费在server机器上的时间片不多。这是几个进程就解决高并发的秘密所在。即@skoo所说的webserver刚好属于网络io密集型应用,不算是计算密集型。
参考:https://www.cnblogs.com/jiangwangxiang/p/8481661.html
https://blog.csdn.net/xal0610/article/details/79531692

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值