V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiangyuecn
V2EX  ›  程序员

把 Ngnix 装成 Windows 服务,本地愉快的上了负载均衡

  •  
  •   xiangyuecn ·
    xiangyuecn · 2018-07-21 20:44:54 +08:00 · 5197 次点击
    这是一个创建于 2303 天前的主题,其中的信息可能已经有所发展或是发生改变。

    知道各位 v2 大佬都是不用鼠标的,我还是喜欢用 Win7,水土不服来喷 哈

    ngnix 虽然提供了 Windows 下的安装包,但要手动运行,手动 doge,还有配置起来感觉重复文字比较多,臃肿。所以故事开始了:很多很多年前写了一个 bat 批处理...


    github: https://github.com/xiangyuecn/Nginx-Windows-Service-Manager

    说明书: https://www.jianshu.com/p/65737635983d

    28 条回复    2020-01-03 23:42:18 +08:00
    ysc3839
        1
    ysc3839  
       2018-07-21 21:17:56 +08:00 via Android
    以 SYSTEM 用户运行 nginx 有安全隐患,应该使用限制权限的用户来运行。
    loading
        2
    loading  
       2018-07-21 21:22:43 +08:00
    @ysc3839 虽然干掉 windows 理论上比干掉 nginx 要简单,请问应该如何配置呢?
    xiangyuecn
        3
    xiangyuecn  
    OP
       2018-07-21 21:31:53 +08:00
    @ysc3839 本地虽然不太在意账户控制,刚刚查了一下 winsw 可以设置服务的运行账户,有时间再来升级一下
    gftfl
        4
    gftfl  
       2018-07-21 21:34:09 +08:00
    哪要这么麻烦。UPUPW 走起。
    xiangyuecn
        5
    xiangyuecn  
    OP
       2018-07-21 21:42:44 +08:00
    @gftfl 我还要 dobbo,还要数据库中间件,现在啃书中,京东 618 囤的书一本都没看完(滑稽
    ysc3839
        6
    ysc3839  
       2018-07-21 21:53:16 +08:00 via Android
    @loading 用 sc config 可以配置服务运行所用的用户,具体要怎么写我无法使用电脑,不知道。
    ladypxy
        7
    ladypxy  
       2018-07-21 22:07:48 +08:00
    正确方法是用 AD 的 Service account 去运行。。
    zhuanzh
        8
    zhuanzh  
       2018-07-21 22:17:33 +08:00 via Android
    但是 win 版的 nginx 有什么意义呢 官方都不推荐
    ragnaroks
        9
    ragnaroks  
       2018-07-21 23:09:48 +08:00
    我其实有点奇怪,为什么 Windows 下不能托管任意非 GUI 程序,就像 systemd 那样
    chengxiao
        10
    chengxiao  
       2018-07-21 23:11:04 +08:00
    Win 下不是也可以跑 Docker 吗?
    alamaya
        11
    alamaya  
       2018-07-21 23:12:31 +08:00
    没意义,不会有公司在 win 下跑 nginx 吧,根本发挥不出性能
    xiangyuecn
        12
    xiangyuecn  
    OP
       2018-07-21 23:38:06 +08:00
    @zhuanzh 本地开发是 Windows 环境,没有多余的机器搞测试服务器,内存吃紧还不敢开虚拟机,doge
    zzzmode
        13
    zzzmode  
       2018-07-21 23:41:42 +08:00 via Android
    后台服务可以用 nssm 管理,本地使用的话 win 下可以试试 caddy 替代 nginx
    luob
        14
    luob  
       2018-07-21 23:48:51 +08:00 via iPhone
    开个 docker 不就好了……
    tomczhen
        15
    tomczhen  
       2018-07-21 23:56:18 +08:00
    然而 IIS 自带负载均衡模块,Application Request Route 了解一下。
    skylancer
        16
    skylancer  
       2018-07-21 23:56:41 +08:00
    @zhuanzh 我记得当年 nginx 不支持个什么特性的时候被 Windows 版本秒天秒地来着- -
    ysc3839
        17
    ysc3839  
       2018-07-21 23:57:30 +08:00 via Android
    @ragnaroks 任务计划程序也许可以实现?
    xiangyuecn
        18
    xiangyuecn  
    OP
       2018-07-22 00:10:45 +08:00
    @tomczhen 单 IIS SSL 配置一项看到就想吐,Server 2008 存储的证书莫名其妙经常重启服务器就没法访问,全系列密码套件不知道怎么升级,调整顺序重启必须服务器,用过 ngnix 后发现原来世界这么美好 ( doge
    ryd994
        19
    ryd994  
       2018-07-22 01:56:42 +08:00 via Android   ❤️ 1
    Nginx on Windows 是基于 select 的,就是个玩具
    Windows 下乖乖用 IIS 去,内核态处理 HTTP 请求的天顶星科技
    ryd994
        20
    ryd994  
       2018-07-22 01:58:02 +08:00 via Android
    @chengxiao
    @luob
    两位,docker on Windows 其实是 docker on Linux on virtualbox
    msg7086
        21
    msg7086  
       2018-07-22 02:00:43 +08:00
    非生产环境无所谓的。生产环境要用 Windows 的话 IIS 妥妥的,性能上天。
    Librazy
        22
    Librazy  
       2018-07-22 02:50:12 +08:00
    @ryd994 不不不,1709 之后有 LCoW
    neoblackcap
        23
    neoblackcap  
       2018-07-22 02:55:36 +08:00
    IIS 用了 IOCP,nginx 用 select 作为 IO 复用,官方文档都说 windows 版是一个玩具,Windows 生产环境负载均衡上 nginx 简直就是在玩。

    @ryd994 我记得有 hyper-v 的支持,性能按道理应该会好一些
    juhezw
        24
    juhezw  
       2018-07-22 03:08:22 +08:00   ❤️ 1
    @loading 服务选项 服务的属性 登陆, 自建一个 users 组的用户就行了,给 nginx 需要访问的目录以权限就 OK 了
    sungkyu
        25
    sungkyu  
       2018-07-22 09:33:43 +08:00
    楼主,Winsw1.9.exe 那两个链接挂了
    xiangyuecn
        26
    xiangyuecn  
    OP
       2018-07-22 09:41:10 +08:00
    @sungkyu bat 里面的是 13 年以前的,readme 里面已更新找到的可用链接,好像那时候 sun 还是 sun,不是 oracle (滑稽
    xiangyuecn
        27
    xiangyuecn  
    OP
       2018-07-22 10:01:10 +08:00
    @ryd994 @msg7086 @neoblackcap 嗯嗯,本地用的,线上酌情使用 ngnix 玩耍吧,小流量不怕。


    不过架构上还是要有负载均衡这层,性能优化上的事是后话,不能因为架构问题导致系统后面不能扩容。看到好几篇那种单机带不动了, 申请好几台服务器,然后发现不支持扩容,只能单机跑就尴尬了,WebService 这层还好,数据库这层如果不能扩容估计要进重构火葬场,哈~


    今早上压测了一下:win7 4G 8 核 笔记本

    结果:除了 https ngnix 只能单进程单核处理 https 握手占用 cpu 外,其余性能和直连 iis 的 tps 不相上下。





    静态资源 http 请求 iis 跑快了还会出错,囧:

    ragnaroks
        28
    ragnaroks  
       2020-01-03 23:42:18 +08:00
    #9
    挖个坟,就是此贴促生了 Wind ( https://github.com/ragnaroks/Wind2 )项目,当然现在 2 年过去了已经是 Wind2 了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2665 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 04:02 · PVG 12:02 · LAX 20:02 · JFK 23:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.