企业的基础环境是一个组织的信息化数字化底座。传统企业基础环境多种系统,应用交杂,多种技术栈使得深入运维成本极大,且人员知识技能较难复用,造成资源浪费。本系列旨在尝试推动这一理念, 建立Windows, 或linux聚焦的技术栈的企业数字环境, 统一技术栈, 简化技术选型提高知识密度与资源复用率, 同时支持中小企业的技术快速落地和大型企业的大规模高并发以及精细化。为广大技术决策提供参考。
本篇是本系列文章第一篇讲Windows下Nginx配置. Nginx是linux里常用服务. 随着Windows拥抱Linux以及WSL(Windows)的普及, 也有些场景是需要异构环境。网上讨论Windows下Nginx使用的信息很少, 笔者将这些信息整理方便需要的读者参考.
注: Nginx在Windows系统下的版本主要提供了基本的HTTP服务器和反向代理功能,尽管它处于beta阶段,并且与Unix版本相比缺少了一些功能,如XSLT过滤器、图像过滤器、GeoIP模块和嵌入Perl语言支持。然而,对于大多数基本的Web服务和反向代理需求,Windows版的Nginx能够满足
环境介绍:
企业Windows客户端通过Nginx通过HTTPS访问内部网页应用. 客户端是Windows 10, 使用Windows CA作为内部PKA, 用Windows版Nginx. 本文主要讲Nginx安装配置部分:
1. 在Windows安装Nginx:
从官方网站下载Nginx Windows版本进行安装. :
可以选择最新版本, 下载后解压就可以.
2. 安装Windows CA, 并生成带有私钥的证书用于web应用:
采用Windows 2016作为内部CA证书服务器. 证书服务器的配置安装我们将在其他文章里详细展开. 这里假设你已经生成了1.pfx的证书文件.
3. 在安装Nginx的Windows服务器安装Openssl:
Nginx默认不支持pfx/cer格式证书. 需要将pfx转key, crt和pem进行配置使用
下载openssl Windows安装文件:
安装后选择将openssl.exe 复制到 bin文件夹。
同时把第二步生成的1.pfx 复制到 openssl的 bin文件夹下,方便后续操作.
4. 进Openssl转证书:
a. 以管理员身份运行cmd.exe, 进入到openssl.exe和证书所在目录 bin
b. 运行一下命令开始转证书:
根据pfx生成key文件
openssl pkcs12 -in 1.pfx -out server.key -nocerts
根据提示输入三次口令 -- 这里第一次为pfx文件密码, 2/3为pem密码
根据pfx生成crt证书文件
openssl pkcs12 -in 1.pfx -out server.crt
根据提示输入三次口令 -- 这里第一次为pfx文件密码, 2/3为pem密码
生成pem文件
openssl x509 -in server.crt -outform PEM -out server.pem
这里防止nginx每次启动都需要输入pem密码, 多做一步:
openssl rsa -in server.key -out server.key.unsecure
注意: server.key.unsecure 使得私钥没有密码保护.
- 配置Nginx 使用生成的证书:
进到Nginx安装目录的conf文件夹, 按如下编辑nginx.conf文件. 将servername, proxy_pass 地址改为实际值.
如果nginx到后端无需SSL, 可以配置proxy_pass 为http
这里建议将nginx所需要的证书复制到conf文件夹, 简化配置证书路径. nginx是linux环境下构建的应用, 其路径表达和Windows 不同。
# HTTPS server # 将servername修改为自己的域名server {listen 443 ssl; server_name servername; ssl_certificate "c:\Nginx\conf\server.pem"; ssl_certificate_key "c:\Nginx\conf\server.key.unsecure";ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;location / { proxy_pass http://ipaddress:port; } }
- 启动Nginx, 检测 https连接是否成功.
这里需要注意的是, 内部WindowsCA的 根证书,需要出现在客户端机器的受信任证书颁发机构, 不然服务器证书也将不被信任从而浏览器访问会出现证书错误.
正常情况下, https访问就会成功. 如果之前nginx.conf的证书路径配置错误, 则nginx无法加载, 会报无法找到证书文件的错误.
关注生产力联盟, 提高个人和组织的新质生产力. 欢迎关注交流.