隐藏

windows下nginx的使用教程

发布:2022/12/12 11:13:20作者:管理员 来源:本站 浏览次数:674

Nginx

(engine x) 是一个高性能的HTTP和反向代理web服务器,可以实现反向代理,负载均衡和HTTP缓存等。

优点:占内存小,配置简单,高并发连接,内存消耗小,稳定性高,节省带宽(支持GZIP压缩),异步非阻塞事件处理机制

nginx下载:


下载地址 http://nginx.org/en/download.html


下载解压zip文件

nginx启动:


   双击 nginx.exe 启动

   打开cmd命令行,切换到nginx目录下,执行命令启动


   start nginx 或者 nginx.exe


在浏览器输入 http://localhost:80 ,便可以访问到nginx

nginx常用命令:


停止nginx


   // 完整有序的停止nginx,保存相关信息:nginx -s quit


   // 快速停止nginx,可能并不保存相关信息:nginx -s stop


重启nginx


   nginx -s reopen


重新载入配置文件


   nginx -s reload


查看帮助信息


   nginx -h


查看nginx版本


   nginx -v


nginx配置文件:


conf 文件夹下nginx.conf

文件为nginx配置文件

组成部分:


   main块(全局块):nginx全局信息,指令的相关配置

   events块:nginx工作模式,与用户网络连接的相关配置

   http块:http协议信息,代理,缓存,日志大多数功能和第三方模块的的相关配置

   server块:虚拟主机的相关配置(一个http块中可有多个)

   location块:请求路由,各种页面处理情况的相关配置

   upstream块:nginx负载均衡的相关配置


nginx.conf:


#main全局配置

#user  nobody;                 #配置用户或者组,默认为nobody

worker_processes  1;               #允许生成的进程数,默认为1

#error_log  logs/error.log;              #制定日志路径,级别。级别:debug|info|notice|warn|error|crit|alert|emerg

#pid        logs/nginx.pid;                             #指定nginx进程运行文件存放地址                             


events {                  #工作模式配置

    multi_accept on;                 #设置一个进程是否同时接受多个网络连接,默认为off

    #use epoll;                     #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport

    worker_connections  1024;                #最大连接数,默认为512

}

  

http{                                                #http配置

 include       mime.types;                        #文件扩展名与文件类型映射表

    default_type  application/octet-stream;                                     #默认文件类型,默认为text/plain

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request"'   #日志格式

    #                  '$status $body_bytes_sent "$http_referer" '

    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log;                       #存储访问记录的日志

    #error_log logs/error.log             #存储记录错误发生的日志

    #gzip  on;                 #采用gzip压缩的形式发送数据

    sendfile on;                   #允许sendfile方式传输文件,默认为off

    sendfile_max_chunk 100k;               #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限

    keepalive_timeout 65;                #连接超时时间,默认为75s

    client_header_timeout 10;             #发送请求头的超时时间

    client_body_timeout 10;              #发送请求体的超时时间

                     

  server{                                          #虚拟主机配置

    listen  80;                               #端口号

    server_name  https://blog.csdn.net/weixin_45426836;               #主机域名

    charset  utf-8;               #网页的默认编码格式

 

  #跨域配置(在server中设置为允许全局跨域,在location中设置为允许指定文件跨域)

  add_header Access-Control-Allow-Origin *;        #接受跨域请求的请求源(*为接受所有跨域请求)

     add_header Access-Control-Allow-Methods 'GET,POST,OPTIONS';    #接受跨域请求的HTTP方法

     add_header Access-Control-Max-Age 1728000;        #本次预检请求的有效期,单位为秒

     #接受跨域请求的头信息字段

     add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization'; 


    location / {                                 #路由配置     

       root   x:/xxx/xxx;                       #项目所在路径

       index  index.html index.htm;             #首页(默认页)

    }

    

    #错误页配置

    error_page   500 502 503 504  /50x.html;         

     location = /50x.html {

         root   html;

     } 

     

    #反向代理配置

    location / {

      proxy_pass http://localhost:9999;         #反向代理主机地址配置

      proxy_set_header X-real-ip $remote_addr;       #设置代理请求头,将用户访问的IP记录到自己的IP地段上

      proxy_set_header Host $http_host;         #设置代理请求头,将用户访问的地址记录到自己的HOST记录上

      proxy_connect_timeout 60;           #代理连接超时时间,默认为60

      proxy_send_timeout 60;            #代理发送超时时间,默认为60

      proxy_read_timeout 60;            #代理接受超时时间,默认为60

  }

  }

  

  server{                                          #虚拟主机配置

    listen  81 default_server;                           #default_server设置为默认主机,未匹配到主机域名则使用这个server

    server_name  https://blog.csdn.net/weixin_45426836;                             

    location / {                                 

       root   x:/xxx/xxx;                       

       index  index.html index.htm;             

    }

    

  server {                    #多个虚拟主机配置

        ....

        location {

            ....

        }

    }

}


upstream name {                                #负载均衡配置

 ip_hash;                 #表示让相同的客户端ip请求相同的主机

 #分发服务器的列表配置

   server 192.168.xxx.xxx:9000;            #默认按请求的顺序依次分配主机

   server 192.168.xxx.xxx:9001 backup;           #backup表示如果有两台主机,当一台主机发生事故时,才启用这台主机

   server 192.168.xxx.xxx:9002 weight=1;

   server 192.168.xxx.xxx:9003 weight=4;          #weight表示该主机的权重,和访问率成正比,默认为1

    server 192.168.xxx.xxx:9004 down;           #down表示该主机暂停服务

    server 192.168.xxx.xxx:9005 max_fails=2;         #max_fails表示失败最大次数,超过失败最大次数暂停服务

    server 192.168.xxx.xxx:9006 fail_timeout=10s;        #fail_timeout表示如果请求受理失败,暂停指定的时间之后重新发起请求

}


nginx处理请求:


nginx 在收到请求时先通过 server_name 匹配一个 server,再通过 server 中的 location 继续处理,如果没有匹配到,则会使用 default_server 中的 location 进行处理,如果没有定义 default_server,则第一个定义的 server 为 default_server

vue项目打包部署到nginx


修改nginx配置文件nginx.conf

nginx.conf:


http{                                           

  server{                                        

    listen       8080;                      #设置端口号8080

    server_name  localhost;                 #主机域名

    location / {                                      

       root   C:/vue/dist;                 #dist文件夹路径

       index  index.html index.htm;        #项目首页

    }

  }

}


启动nginx,浏览器输入 http://localhost:8080 便可以访问到我们打包后的vue项目 调试窗口 Network 中可以看到是nginx服务和请求地址

参考资料


Nginx中文手册:http://www.dba.cn/book/nginx/


Nginx维基::https://www.nginx.com/resources/wiki/