隐藏

Nginx 1.6.1 负载均衡器配置并设置windows服务

发布:2022/9/22 14:43:18作者:管理员 来源:本站 浏览次数:903

一、安装nginx(windows版)


1、进入nginx 官网下载安装包:http://nginx.org/en/download.html


2、有很多版本,下载稳定的版本nginx 1.6.1 ,弹出下载页面,


3、选择下载目录,点击下载。


4、解压完后解压,双击nginx.exe:


5、打开控制台(cmd),进入Nginx安装包根路径;


6、输入命令nginx -t检查nginx是否配置成功;


7、输入命令start nginx启动nginx服务;


8、在浏览器中访问localhost,便可看到nginx成功安装并运行的页面。(默认监听端口80)



二、Nginx常用命令


1、检查配置文件是否配置成功,在启动服务之前执行;


nginx -t


    2、启动运行nginx服务;


start nginx


3、等任务完成之后,关闭Nginx服务;


nginx -s quit


4、强制关闭Nginx服务;


nginx -s stop


   5、重启Nginx服务,一般是修改了配置文件之后,使修改生效;


nginx -s reload


三、配置文件讲解


   Nginx所有的设置都在根目录conf文件夹下的nginx.conf文件中。


   在网上看到,不要以记事本来打开conf配置文件,会发生转码问题,破坏配置文件的内容,从而导致Nginx启动不起来。我用Notepad++打开修改的,没有问题。


   1、worker_processes:设定Nginx工作时的进程数,设置值小于cpu的内核数;


worker_processes  1;


2、events:


   events {

       # 设置nginx的最大连接数

       worker_connections  1024;

   }


3、keepalive_timeout:http连接超时时间,默认是65s。当需要上传大文件时,需要适当设置大一点,避免文件上传过程中断开连接,导致文件上传失败;


keepalive_timeout  5000;


4、gzip:对网络传输的数据内容进行压缩;


gzip  on;


 5、upstream:服务器的集群。可以设定多个不同名字的集群,以用于不同的server。这里可以设定nginx的工作策略,这里是使用默认的轮询;


   # 服务器的集群  

   upstream  localhost {  #服务器集群名字

       server    192.168.0.61:8801;

       server    192.168.0.62:8802;

       server    192.168.0.63:8803 down;

       server    192.168.0.64:8804 backup;

   }


注:upstream中的每个server都可以设定以下状态:


weight-设定该服务的访问权重,权重越大被访问的几率越大,相应的压力就越大;

down- 表示此server不参与负载;

max_fails -允许请求失败的最大次数;当超过后返回proxy_next_upstream中定义的的错误;

fail_timeout:请求失败后暂停访问的时限;

backup:备用server;当其他机器全忙或宕机时,才会使用。

6、server:代理服务器,可以设定多个代理服务器(每一个server就是一个虚拟服务器);请求进来之后由server的server_name决定该请求访问哪一个服务;


   server {

       # 设置监听端口

       listen      9876;

       server_name  localhost;

       

       # 设置url编码格式,解决参数中文乱码问题

       charset utf-8;

   

       location / {

           proxy_pass http://localhost;  

           proxy_redirect default;  

   

   }


  7、location: 配置该服务的访问规则,同一个server下可以配置多个location;


   # 对静态资源进行映射

   location ^~ /public/images/ {  

       alias D:/nginx-1.10.1/html/public/images/;

   }

   

   # 对"/"启用负载均衡

   location / {

       proxy_pass http://localhost/;

       proxy_redirect default;

   }


完整的配置信息


   

   #user  nobody;

   #设定Nginx工作时的进程数,设置值小于cpu的内核数

   worker_processes  1;

   

   #error_log  logs/error.log;

   #error_log  logs/error.log  notice;

   #error_log  logs/error.log  info;

   

   #pid        logs/nginx.pid;

   

   

   events {

       #设置nginx的最大连接数

       worker_connections  1024;

   }

   

   

   http {

       include       mime.types;

       default_type  application/octet-stream;

       server_names_hash_bucket_size 64;

       #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  main;

   

       sendfile        on;

       #tcp_nopush     on;

   

       #keepalive_timeout  0;

       keepalive_timeout  65;

   

       #gzip  on;

       #upstream的负载均衡,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。

       #upstream  每个子域名都需要配置一个  注意端口和权重

   

   upstream 192.168.0.66 {

   server 192.168.0.66:8002 weight=1;

   server 192.168.0.66:8003 weight=2;

   }

   #server  的建立,每个子域名  都需要一个 server   servername,proxy_pass 需要配置

   

     

   server {

       #监听端口号

    listen       80;

    #主机名

           server_name  192.168.0.66;

    #强制跳转到 Https

    #rewrite ^(.*)$ https://$host$1 permanent;

    #字符集

           charset utf-8;

           #access_log  logs/host.access.log  main;

           location / {

               root   html;

               index  index.html index.htm;

       #输入需要负载的子域名地址,然后配置 upstream 对应的服务器

       proxy_pass http://192.168.0.66;

    #设置主机头和客户端真是地址,以便服务器获取客户真实IP

    proxy_set_header Host $host;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

           }

   }

   

       # another virtual host using mix of IP-, name-, and port-based configuration

       #

       #server {

       #    listen       8000;

       #    listen       somename:8080;

       #    server_name  somename  alias  another.alias;

   

       #    location / {

       #        root   html;

       #        index  index.html index.htm;

       #    }

       #}

   

       

   

   }


四、将Nginx注册为windows系统服务可随机启动


1. 在项目主页内找到winsw的下载页面(我用的是最新2.0.2版本,你可以下载最新的)


http://repo.jenkins-ci.org/releases/com/sun/winsw/winsw/1.18/winsw-1.18-bin.exe


http://repo.jenkins-ci.org/releases/com/sun/winsw/winsw/1.19/winsw-1.19-bin.exe


下载的文件:winsw-1.19-bin.exe


2. 在nginx项目页面下载nginx windows版本


http://nginx.org


把nginx压缩包解压放到指定目录,例如我放的是c盘根目录。特别强调路径不要带空格的,否则会启动失败。


nginx安装目录是:C:\nginx-1.6.1\


3. 将winsw-1.9-bin.exe复制到nginx目录:C:\nginx-1.6.1\


,并将其改成nginx-service.exe


4. 新建一个xml文件nginx-service.xml,名称一定要与上面的.exe上的文件名一致的哦。


   <?xml version="1.0" encoding="UTF-8" ?>

   <service>

       <id>nginx</id>

       <name>nginx</name>

       <description>High Performance Nginx Service</description>

       <logpath>C:\nginx-1.16.1\logs</logpath>

       <log mode="roll-by-size">

           <sizeThreshold>10240</sizeThreshold>

           <keepFiles>8</keepFiles>

       </log>

       <executable>C:\nginx-1.16.1\nginx.exe</executable>

       <startarguments>-p C:\nginx-1.16.1</startarguments>

       <stopexecutable>C:\nginx-1.16.1\nginx.exe</stopexecutable>

       <stoparguments>-p C:\nginx-1.16.1 -s stop</stoparguments>

   </service>


5、在nginx目录下新增文件nginx-service.exe.xml


   <?xml version="1.0" encoding="UTF-8" ?>

   <configuration>

       <startup>

           <supportedRuntime version="v2.0.50727" />

           <supportedRuntime version="v4.0" />

       </startup>

       <runtime>

           <generatePublisherEvidence enabled="false" />

       </runtime>

   </configuration>


文件内容如下:




6、启用windows自带的.Net Framework服务。




7. 运行Windows cmd命令,进入nginx目录:运行nginx-service.exe install将其注册为windws系统服务。当配置错误(就是系统服务中有了但是启动不了)或者是要卸载它的时候运行:nginx-service.exe uninstall


在运行Windows cmd命令,输入services.msc,就可以在系统服务中看到nginx服务,右击启动就可以了,访问http://localhost:8001出现nginx页面,安装成功。 因为我这台电脑80端口被占用了,然后就使用了8001端口