本文介绍如何在windows下使用nginx

起步

下载安装

下载 http://nginx.org/download/

进入根目录运行
start nginx 如果报错或者无法启动应该是80端口被占用,设置nginx.conf文件将80端口换成其他端口,我换成了8085 访问 http://localhost:8085/,可以看到nginx的欢迎界面

将nginx安装成windows服务

步骤1,下载winsw工具 http://repo.jenkins-ci.org/releases/com/sun/winsw/winsw/

步骤2,我下载的winsw是winsw-2.1.2-bin.exe,将其放置于nginx根目录改名为nginxsvc.exe

步骤3,创建nginxsvc.xml置于nginx根目录,写入如下配置(注:国内外网站的配置文件都有问题,写如下配置文件直接跑通)
<service>
<id>nginx</id>
<name>nginx</name>
<description>nginx</description>
<executable>C:\nginx\nginx.exe</executable>
<logpath>C:\nginx\logs</logpath>
<logmode>roll</logmode>
<depend></depend>
<startargument>-pc:\nginx</startargument>
<stopexecutable>c:\nginx\nginx.exe</stopexecutable>
<stopargument>-s</stopargument>
<stopargument>stop</stopargument>
</service>
步骤4,运行 nginxsvc.exe install 安装服务
步骤5,到服务界面启动服务
步骤6,修改服务登录用户,点击服务->属性,将服务登录用户修改为当前电脑用户
如果不这么做,nginx的命令你都没法执行

常用命令

nginx -s stop                           暴力的停止nginx
nginx -s quit 优雅的停止nginx
nginx -s reload 重新加载conf配置
nginx -s reopen 重新打开配置文件
taskkill /f /pid 28544 结束进程
tasklist /fi "imagename eq nginx.exe" 查看nginx进程
nginx -c ./conf/nginx.conf 指定配置文件开启nginx

构建服务

静态服务

进入nginx.conf添加如下配置

server {
listen 10000;
server_name localhost;
location /sjl/ {
root data;
index index.html index.htm;
}
} 此配置告知nginx,当有请求 http://localhost:10000/sjl/ 访问nginx根目录 data/sjl/index.html

代理服务器

server {
listen 10000;
server_name localhost;
location /sjl/ {
root data;
index index.html index.htm;
}
} server {
listen 10001;
root data;
server_name localhost; location / {
proxy_pass http://localhost:10000/sjl/;
}
} 监听 http://localhost:10001 将访问http://localhost:10001代理到http://localhost:10000/sjl/ 也就是说你访问http://localhost:10001实际上是访问http://localhost:10000/sjl/

http配置文件转移

为了配置清晰明朗,在你的nginx.conf的http模块中

http {
...
include selfconf/my.conf;
...
} 在nginx.conf同级目录下创建selfconf/my.conf文件 在my.conf中直接填写server配置即可

负载均衡

负载均衡配置

我没有那么多电脑,所以就用nginx做了多个server的模拟

// 均分请求到下面三个模拟服务器
upstream localhost {
server 127.0.0.1:10001;
server 127.0.0.1:10002;
server 127.0.0.1:10003 backup; // 这个是备用服务器,当前面两个搞不定了,再分配到此处
} server {
listen 10000;
server_name 127.0.0.1;
location / {
proxy_pass http://localhost;
} error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
} // 下面模拟三个服务器
server {
listen 10001;
server_name 127.0.0.1;
location / {
root data/sji/;
index index.html index.htm;
}
} server {
listen 10002;
server_name 127.0.0.1;
location / {
root data/sjl/;
index index.html index.htm;
}
} server {
listen 10003;
server_name 127.0.0.1;
location / {
root data/sjm/;
index index.html index.htm;
}
}

负载均衡方法

第一种:Round Robin,默认方式请求权重均分

    upstream localhost {
server 127.0.0.1:10001 weight=5; // 权重为5
server 127.0.0.1:10002 max_fails=3 fail_timeout=30s; // 设置最大重连次数为3次,和最大不可用时长30s
server 127.0.0.1:10003 backup; // 备用服务器
}
第二种:Least Connections,将请求分配给连接数最少的服务器 upstream localhost {
least_conn;
server 127.0.0.1:10001;
server 127.0.0.1:10002;
server 127.0.0.1:10003 backup;
}
第三种,IP Hash,相同的ip访问都会被分配到同一个服务器 upstream localhost {
ip_hash;
server 127.0.0.1:10001;
server 127.0.0.1:10002;
server 127.0.0.1:10003 down; // 此服务器不参与分配
}
第四种,Generic Hash,可以自定义检测key key相同则负载到同一台服务器上 upstream localhost {
hash $request_uri consistent;
server 127.0.0.1:10001;
server 127.0.0.1:10002;
server 127.0.0.1:10003;
} $request_uri 表示的是http url后边的uri
$args 查询参数
$remote_addr 客户端的IP
$remote_port 客户端的端口
... 类似的还有很多

正式线上的负载均衡配置

// ipAdress 这是你的服务器IP地址

// proxyAdress 这是你的代理服务器IP地址

// 假设你的后台api接口为 ipAdress:9000/test 和 ipAdress:9001/test 可以使用如下方式进行负载均衡

// 通过你的代理服务器 proxyAdress:10000/test 即可负载到上面两个服务器对应的test api

upstream ipAdress {
server ipAdress:9000;
server ipAdress:9001;
} server {
listen 10000; server_name proxyAdress; location /test/ {
proxy_pass http://ipAdress;
} error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

windows下使用nginx的更多相关文章

  1. windows 下使用Nginx替代apache作为服务器

    说实话, 在windows下使用Nginx 着实有点不太方便, 但因项目需求, 又不想换系统(虽然可以搞个虚拟机玩), 只能用Nginx了 好了, 不多说了. 开始... 首先我用的是xampp包(A ...

  2. windows下安装nginx

    说起开发,自己感到非常惭愧,由于公司让我给<绿电侠>项目写整体架构解决方案,才开始接触nginx这个东东,突然觉得它是一把非常好的利器. 本文主要记录在windows下安装nginx,另参 ...

  3. windows 下配置 Nginx 常见问题(转)

    windows 下配置 Nginx 常见问题 因为最近的项目需要用到负载均衡,不用考虑,当然用大名鼎鼎的Nginx啦.至于Nginx的介绍,这里就不多说了,直接进入主题如何在Windows下配置. 我 ...

  4. Windows下配置Nginx

    一.今天是2017年1月18日.揣着一种也许叫做冲动的心情,决定以后每天都记录和回顾新涉及的技术,巩固已学到的知识,坚持. 二.回归到今天的技术主题,因为之前对于[反向代理]这种技术充满了好奇,借此机 ...

  5. Windows 下使用nginx命令启动

    http://wanganwu.blog.163.com/blog/static/7788722012322111417966/ Windows下Nginx的启动.停止等命令 在Windows下使用N ...

  6. windows下搭建nginx+php开发环境

    windows下搭建nginx+php开发环境 1.前言 windows下大多我们都是下载使用集成环境,但是本地已经存在一个集成环境,但不适合项目的需求.因此准备再自己搭建一个环境. 2.准备 工具: ...

  7. Windows下控制Nginx的状态

    Windows下Nginx的启动.停止等命令 在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动.停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍.1.启 ...

  8. 在CentOS/Windows下配置Nginx(以及踩坑)

    在CentOS/Windows下配置Nginx(以及踩坑) 1. 序言 因为这类文章网上比较多,实际操作起来也大同小异,所以我并不会着重于详细配置方面,而是将我配置时踩的坑写出来. 2. CentOS ...

  9. Windows下使用Nginx+Tomact做负载均衡

    前言 今天,王子与大家闲谈一下如何在Windows下使用Nginx+Tomcat做负载均衡的完整步骤,小伙伴们可以试着自己动手实践一下哦. 另外说明一点,本篇文章是纯实操文章,不涉及太多原理的解读,后 ...

随机推荐

  1. [转载]java在线比较两个word文件

    一.项目背景 开发文档管理系统或OA办公系统的时候,实现在线处理word文档的功能比较容易,但是也经常会有客户提出文档版本管理的需求,这就需要同时在线打开两个word文件,对比两个不同版本的word文 ...

  2. Java8_01_新特性概述

    一.前言 二.

  3. UI- Layer的使用总结(附动画)

    #pargma mark - Layer 1. 设置当前视图的背景颜色 self.view.backgroundColor = [UIColor lightGrayColor]; 2. 创建一个视图, ...

  4. 任务调度 Spring Task 4(二 )

    注解和配置文件两种 第一种:配置文件方式 第一步:编写作业类 即普通的pojo,如下: import org.springframework.stereotype.Service; @Service ...

  5. GO语言打包ICO图标

    1. go get github.com/akavel/rsrc2. 创建manifest文件, 命名:main.exe.manifest : <?xml version="1.0&q ...

  6. ORM版,学生管理系统03

    关于老师信息管理 建立多对多关系 第一种(通过外键建立) 自己写类,自己使其建立关系 缺点: 不能用Django ORM 多对多操作的语法 class Teacher(models.Model): t ...

  7. python学习之输出与文件读写

    #1. 打印字符串print ("His name is %s"%("Aviad")) #2.打印整数print ("He is %d years o ...

  8. 【英语】Bingo口语笔记(84) - 惊讶的表达

  9. Java [Leetcode 383]Ransom Note

    题目描述: Given
 an 
arbitrary
 ransom
 note
 string 
and 
another 
string 
containing 
letters from
 al ...

  10. js中typeof用法详细介绍

    typeof 运算符把类型信息当作字符串返回,包括有大家常有变量类型.   typeof 运算符把类型信息当作字符串返回.typeof 返回值有六种可能: "number," &q ...