nginx for windows
2021-01-18 22:14
标签:inactive nod gen jpg 访问日志 gzip 管理器 agent cer 公司由于linux云服务器还没批下来,暂时先在windows服务器上测试。Windows版nginx使用本地Win32 API(而非Cygwin仿真层)。当前仅使用select()和poll()(1.15.9)连接处理方法(事件驱动模型),因此不应期望高性能和可伸缩性(在linux上支持epoll,它是性能最高的一种)。由于这个原因和其他一些已知问题,适用于Windows的Nginx版本被认为是Beta版本。目前,除了XSLT过滤器,图像过滤器,GeoIP模块和嵌入式Perl语言之外,它提供的功能几乎与UNIX版本的nginx相同。 1.1下载安装 windows下载安装包1.17.7 http://nginx.org/en/download.html 启动nginx, 没有找到nginx.exe进程, 查看日志C:\nginx-1.17.7\logs 2020/01/03 13:55:53 [emerg] 11992#35328: bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions) 1.2 查看谁占用了80端口 C:\nginx-1.17.7>netstat -ano|findstr "80" 可能是http,查看下http服务状态: C:\nginx-1.17.7>netsh http show servicestate 发现6468占用了,再查看任务管理器,是IIS占用了,如下所示: 1.3 解决windows 80端口被iis占用 方法1,启动栏输入regedit HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP 将start 的3改为0 重启服务器, 方法2:直接关闭iis中的默认站点 Default Web Site 再次启动 查看进程状态 tasklist /fi "imagename eq nginx.exe" 一个是主进程(守护进程),另一个工作进程 访问http://127.0.0.1/,查看nginx首页 1.4 nginx 命令管理 nginx -s stop 快速结束服务 nginx -s quit 正常结束服务 nginx -s reload 更改配置,使用新配置启动新工作进程,正常关闭旧工作进程 nginx -s reopen 重新打开日志文件 Nginx/Win32是运行在一个控制台程序,而非windows服务方式的。 1.5其它事项 日志文件,如果是debug级别,日志文件会增长的比较快。需要更大的磁盘目录空间。 (1) https协议需要证书, 将申请的.pfx证书使用openssl工具,将转换成crt和rsa文件。再放在nginx目录的ssl文件夹下,转换示例如下: openssl >pkcs12 -in D:\SSL\1717704_apicms.ABC.com.pfx -nocerts -nodes -out D:\SSL\apicms.ABC.com.rsa (2)配置中所有相对路径,都是nginx目录下的。 比如:logs/ , proxy_cache_path cache , ./ssl (3) 如果没有购买域名绑定当前nginx服务器ip, 那么测试需要在nginx服务器上使用hosts文件。才能监听server块的虚拟主机名,hosts绑定如下所示: 127.0.0.1 apicms.ABC.com 127.0.0.1 www.ABC.com 再ping下确认,hosts文件是否生效 参考资料 http://nginx.org/en/docs/windows.html nginx for windows 标签:inactive nod gen jpg 访问日志 gzip 管理器 agent cer 原文地址:https://www.cnblogs.com/MrHSR/p/12144673.html一.介绍安装
C:\Users\Administrator>cd C:\nginx-1.17.7
C:\nginx-1.17.7>start nginx
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4 二. windows下nginx.conf配置示例
#默认所有用户都能启动nginx进程
#user nobody;
#worker进程数,配置对应cpu核心数
worker_processes 1;
#服务器错误日志
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#主进程,也叫守护进程pid存放路径
#pid logs/nginx.pid;
#有默认的事件驱动模型
events {
#每个worker进程的最大连接数
worker_connections 1024;
accept_mutex on; #默认为on,解决"惊群"问题
}
http {
#识别web资源类型,引入外部 mime.types文件,路径在conf/mime.types下
include mime.types;
#默认资源类型
default_type application/octet-stream;
#自定义服务日志,这里记录前端请求的日志,而不是全局中nginx进程运行的常规日志
log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘
‘$status $body_bytes_sent "$http_referer" ‘
‘"$http_user_agent" "$http_x_forwarded_for"‘;
#访问日志,main是log_format格式字符串
#access_log logs/access.log main;
#方式转输方式,转输的数据最大量不能超过sendfile_max_chunk 128k
sendfile on;
#tcp_nopush on;
#设置格式
charset utf-8;
#配置连接超时时间
#keepalive_timeout 0;
keepalive_timeout 65;
#默认开启gzip压缩
#gzip on;
# 缓存设置,基于proxy_cache机制
#path缓存目录
#levels相对于path指定目录的第几级hash目录中缓存数据文件,目录层级2级,
#keys_zone索引内存区域名称 10m是大小
#max_size硬盘中缓存数据的大小限制(超过启动nginx自己的淘汰规则),
#inactive在60分钟的时间内没有被访问就会被清理,存放临时文件
#use_temp_path 关闭
proxy_cache_path cache levels=1:2 keys_zone=ABC_cache:10m max_size=5g inactive=60m use_temp_path=off;
# HTTP server 监听 www.ABC.com
server {
listen 80; #监听端口
server_name www.ABC.com;
#创建独立的日志,重点:手动在logs下创建www.ABC.com文件夹
access_log logs/www.ABC.com/access.log;
error_log logs/www.ABC.com/error.log;
#charset koi8-r;
location / {
#root html;
#index index.html index.htm;
#缓存设置
proxy_cache ABC_cache;
proxy_cache_methods GET HEAD POST;
proxy_cache_valid 200 304 60m; #200和304头信息过期时间
proxy_cache_valid 404 1m;
proxy_cache_valid any 10m; #其他过期时间10分钟
expires 2h;
proxy_pass http://ABCservers;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
{
#目录是本机web服务器静态资源目录
root D:\\www\www.ABC.com\wwwroot;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# HTTPS server 监听apicms.ABC.com端口
server {
listen 443 ssl;
server_name apicms.ABC.com;
#创建独立的日志,重点:手动在logs下创建apicms.ABC.com文件夹
access_log logs/apicms.ABC.com/access.log;
error_log logs/apicms.ABC.com/error.log;
ssl_certificate ./ssl/apicms.ABC.com.crt;
ssl_certificate_key ./ssl/apicms.ABC.com.rsa;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
proxy_pass https://apicmsservers;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
#web服务器端获得用户的真实ip request.getAttribute("X-Real-IP")
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Port $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
#apicms后端服务器组,如果一个服务器处理请求出错,会顺次交给组内下一个服务器进行处理,以此类推
upstream apicmsservers{
#当某个server请求二次失败后,10分钟以不会把请求发往已检查出标记为不可用的服务器
server 127.0.0.1:44301 max_fails=2 fail_timeout=600s weight=5;
server 192.168.0.125:44301 max_fails=2 fail_timeout=600s weight=5;
}
#官网后端服务器组
upstream ABCservers{
server 127.0.0.1:8081 max_fails=2 fail_timeout=600s weight=5;
server 192.168.0.125:8081 max_fails=2 fail_timeout=600s weight=5;
}
}
openssl >pkcs12 -in D:\SSL\1717704_apicms.ABC.com.pfx -clcerts -nokeys -out D:\SSL\apicms.ABC.com.crt