Nginx安装与调优部署文档(WinServer)
off999 2025-01-01 22:16 15 浏览 0 评论
1. 安装环境准备
1.1 部署规划
软件安装路径 E:\nginx
软件日志路径 E:\nginx\logs
软件主配置文件路径 E:\nginx\conf
软件子配置文件路径 E:\nginx\conf\conf.d
软件站点配置路径 E:\nginx\html
端口规划 80
2. Nginx安装部署
2.1 Nginx安装包下载与依赖安装
? WinServer下安装部署Nginx注意事项:
1、Nginx安装路径不能出现中文,如E:\软件\app
2、Nginx安装路径不能包含空格与括号,如C:\Program Files (x86)
3、nginx.conf包含子配置文件夹时,include也是不能包含上述两个注意事项中提到的,同时include参数后面的路径符号也要注意,正确的写法如下
include conf.d/*.conf
? .NET Framework 3.5安装描述
1、点击左下角【开始】按键,找到【服务器管理器】;
2、点击界面的【添加角色和功能】;
3、在【添加角色和功能向导】界面点击“下一步“;
4、在“安装类型”界面继续点击“下一步”;
5、在“服务器选择”界面继续点击“下一步”;
6、在“服务器角色”界面继续点击“下一步”;
7、在“功能”界面在“.NET Framework 3.5功能”前面方框中打勾选中,点击“下一步”;
8、在“确认”界面点击“安装”,开始.NET Framework 3.5的安装
9、在“结果”界面耐心等待.NET Framework 3.5的安装,界面提示“已在WIN-XXX上安装成功”点击“关闭”完成.NET Framework 3.5的安装工作。
? 下载nginx-1.19.1.zip安装包,并解压
nginx-1.19.1.zip下载地址:http://nginx.org/download/nginx-1.19.1.zip
? 下载Windows Service Wrapper
官方地址:https://github.com/winsw/winsw
Windows Service Wrappe下载地址:http://repo.jenkins-ci.org/releases/com/sun/winsw/winsw/2.9.0/winsw-2.9.0-bin.exe
2.2 Nginx安装描述
1、上传nginx-1.19.1.zip安装包到服务器;
2、解压nginx-1.19.1.zip到E盘,并重命名为nginx(名称可根据实际场景使用来区分)
3、将winsw-2.9.0-bin.exe重命名为nginx-service.exe并且复制到E:\nginx目录下
4、在E:\nginx目录下新建nginx-service.xml文件,内容如下(路径根据实际部署路径填写)
<?xml version="1.0" encoding="UTF-8" ?>
<service>
<id>Nginx</id>
<name>Nginx</name>
<description>本服务用于加载Nginx服务,请确保开机启动。</description>
<logpath>E:\nginx\logs</logpath>
<executable>nginx.exe</executable>
<stopexecutable>nginx.exe</stopexecutable>
<stopargument>-s</stopargument>
<stopargument>stop</stopargument>
<logmode>rotate</logmode>
5、安装Nginx系统服务或者卸载Nginx系统服务
5.1 安装Nginx系统服务
在E:\nginx目录下,使用组合键Shift+Ctrl+鼠标右键,选择“在此处打开命令行容器”,在弹出的cmd窗口运行如下命令:
nginx-service.exe install
界面提示如下内容表示安装完成:
2020-07-23 14:18:35,374 INFO - Installing the service with id 'Nginx'
5.2 卸载Nginx系统服务
在E:\nginx目录下,使用组合键Shift+Ctrl+鼠标右键,选择“在此处打开命令行容器”,在弹出的cmd窗口运行如下命令:
nginx-service.exe uninstall
界面提示如下内容表示安装完成:
2020-07-23 14:19:38,261 INFO - Uninstalling the service with id 'Nginx'
6、查看系统服务
在“控制面板\系统和安全\管理工具”双击“服务”或是右键电脑左下角的“开始”–>“运行“中输入如下指令:
services.msc
7、配置系统环境变量
通过【这台电脑】—>右键【属性】—>【高级系统设置】—>【环境变量】—>【系统变量】—>【Path】—>【编辑】
在末尾添加nginx安装路径
;E:\nginx\
8、服务停止与启动
8.1 方法1可以通过步骤6的系统服务中操作nginx的启动与停止
8.2 方法2可以通过在dos命令行中通过输入如下指令来启动或停止nginx服务
net stop nginx
Nginx 服务正在停止.
Nginx 服务已成功停止。
net start nginx
Nginx 服务正在启动.
Nginx 服务已成功启动。
8.3 存在僵死的进程无法stop时可输入如下指令可查看nginx运行进程
tasklist | findstr nginx
nginx-service.exe 2248 Services 0 19,720 K
nginx.exe 1660 Services 0 5,568 K
nginx.exe 104 Services 0 5,884 K
tskill 2248
tskill 1660
tskill 104
如下命令,则是仅查看nginx服务进程
tasklist /fi "imagename eq nginx.exe"
9、 检查配置文件是否正确的方法:在E:\nginx目录下,使用组合键Shift+Ctrl+鼠标右键,选择“在此处打开命令行容器”,在弹出的cmd窗口运行如下命令:
nginx -t
10、修改配置文件后加载配置文件的方法:在E:\nginx目录下,使用组合键Shift+Ctrl+鼠标右键,选择“在此处打开命令行容器”,在弹出的cmd窗口运行如下命令:
nginx -s reloa
2.3 配置防火墙入站端口
? 服务器管理器–>配置–>高级安全windows防火墙–>入站规则,进行新建规则。
? 规则类型界面选择端口
? 选择TCP,然后指定端口;
? 操作设置为 允许连接;
? 设置 域、专用、公用 均应用该规则;
? 为该端口起个备注名,便为识别
3. Nginx加固
3.1 安全审计
? 启用错误日志
#错误日志
error_log logs/error.log;
? 启用访问日志
#访问日志
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer"'
'"$http_user_agent" "$http_x_forwarded_for"'
'"$request_time" "$upstream_response_time"';
#日志缓存
access_log logs/access.log main buffer=64k flush=60s;
open_log_file_cache max=300 inactive=20s valid=1m min_uses=2;
3.2 隐藏nginx版本
? 在nginx.conf配置文件中添加隐藏nginx版本的参数
# hide nginx version
server_tokens off;
? 在fastcgi.conf配置文件中添加#注释如下配置隐藏php中nginx的版本信息
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
3.3 数据保密性
? 配置防盗链,在nginx.conf对应的server中配置以下参数(根据实际环境需要配置)
location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip)$ {
valid_referers none blocked 域名;
if ($invalid_referer) {
return 403;
break;
}
access_log off;
}
3.4 配置错误界面
? 把error.html放在nginx/html下。在nginx.conf的http中配置以下参数
error_page 404 500 502 503 504 505 /error.html;
3.5 Web前端安全
? 防止点击劫持,防止ie内容嗅探,防止xss,只能从本域名加载资源(外部脚本无法执行),在nginx.conf的server中配置以下参数(根据实际环境需要配置)
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection 1;
add_header Content-Security-Policy "default-src 'self'";
3.6 https安全
? 不使用SSL和TLS1.1以下,使用TLS1.2以上版本,在nginx.conf的server中配置以下参数(在启用https的场景中配置)
SSL_Protocols TLSv1.2;
3.7 访问控制
? 限制ip访问(因公网访问nginx,建议不设置。除非有恶意ip尝试cc攻击或暴力破解等非法操作)(根据实际环境需要配置)
location / {
deny 192.168.1.1; #拒绝IP
allow 192.168.1.0/24; #允许IP
allow 10.1.1.0/16; #允许IP
deny all; #拒绝其他所有IP
}
3.8 限制http请求方法
? 在nginx.conf的server中配置以下参数,只允许GET、POST两个
http请求方式
location / {
if ($request_method !~* GET|POST) {
return 403;
}
}
4. Nginx优化
4.1 Nginx工作进程数量
? 一般设置CPU的核心或者核心数x2(worker_processes最多开启8个)
worker_processes 4;
4.2 Nginx运行CPU亲和力
? 比如2核配置
worker_processes 2;
worker_cpu_affinity 01 10;
? 比如4核配置
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
? 比如8核配置
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 0000100000010000 00100000 01000000 10000000;
4.3 Nginx事件处理
? 配置nginx事件处理提高处理效率
events {
worker_connections 65535;
multi_accept on;
}
4.4 开启高效传输模式
sendfile on;
tcp_nopush on;
4.5 连接超时时间
? 保护服务器资源,CPU,内存与控制连接数
keepalive_timeout 60;
tcp_nodelay on;
client_header_buffer_size 4k;
open_file_cache max=102400 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 1;
client_header_timeout 60;
client_body_timeout 60;
reset_timedout_connection on;
send_timeout 20;
client_max_body_size 10m;
4.6 配置文件专属路径便携配置
不同的服务配置单独的conf文件,在nginx的conf目录下创建conf.d文件夹,在nginx.conf配置文件添加include参数
include conf.d/*.conf;
4.7 Gzip调优
使用gzip压缩功能,可能为我们节约带宽,加快传输速度
gzip on;
gzip_min_length 2k;
gzip_buffers 4 32k;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_typestext/plain text/css text/javascriptapplication/json application/javascript application/x-javascriptapplication/xml;
gzip_vary on;
gzip_proxied any;
4.8 Expires缓存调优
缓存,主要针对于图片,css,js等元素更改机会比较少的情况下使用,特别是图片,占用带宽大,可以设置图片在浏览器本地缓存365d,css,js,html可以缓存个10来天。
location ~* \.(ico|jpe?g|gif|png|bmp|swf|flv)$ {
expires 30d;
#log_not_found off;
access_log off;
}
location ~* \.(js|css)$ {
expires 7d;
log_not_found off;
access_log off;
}
5、error.html界面内容
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>网页访问不了</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="404/error_all.css?t=201303212934">
</head>
<body class="error-404">
<div id="doc_main">
<section class="bd clearfix">
<div class="module-error">
<div class="error-main clearfix">
<div class="label"></div>
<div class="info">
<h3 class="title">抱歉!该网站可能因为以下原因无法访问!</h3>
<div class="reason">
<p>1.您访问的域名未绑定主机;</p>
<p>2.您正在使用IP访问,请尝试使用域名访问;</p>
<p>3.该网站已被网站管理员停止。</p>
</div>
</div>
</div>
</div>
</section>
</div>
</body></html>
6. 结束
相关推荐
- Modbus RTU 指令基本功能介绍(modbus-rtu)
-
ModbusRTU协议概述:入门级知识点ModbusRTU协议,是工业自动化领域应用广泛的串行通信协议。它简单、可靠,在各种工业设备之间建立通信桥梁,实现数据的采集和控制。ModbusRTU...
- AIOT开发选型:行空板 K10 与 M10 适用场景与选型深度解析
-
前言随着人工智能和物联网技术的飞速发展,越来越多的开发者、学生和爱好者投身于创意项目的构建。在众多的开发板中,行空板K10和M10以其独特的优势脱颖而出。本文旨在为读者提供一份详尽的行空板K...
- 程序员花了1个月时间,手搓低成本机械臂:跟着他你也能复刻一台
-
在开源硬件的广阔天地中,SO-ARM100作为一款备受瞩目的开源机械臂项目脱颖而出。它以标准化的四轴机械臂设计为核心,构建起一个开放共享的技术平台,为机械臂爱好者与开发者提供了绝佳的远程操作实践场域...
- RPC接口测试技术-Tcp 协议的接口测试
-
首先明确Tcp的概念,针对Tcp协议进行接口测试,是指基于Tcp协议的上层协议比如Http,串口,网口,Socket等。这些协议与Http测试方法类似(具体查看接口自动化测试章...
- 同事开玩笑说:你这个python程序要是外流出去了,可能会有危险
-
引言公司因为业务原因,购入了一些高灵敏高精度的振动传感器。老板说:“拿去进行测试,看看数据如何?”吭哧吭哧接入数据,一看,确实精度和灵敏度非常高。具体多高呢?将传感器固定在相关的结构物上,在办公室中人...
- STM32搭建简易环境监测站并通过网络实时上报
-
一、系统总体架构本系统以STM32F407为核心,搭建一个环境监测节点,能够采集温湿度、光照、空气质量等数据,并通过OLED屏显示,同时通过ESP8266模块实现局域网数据上报。适合室内空气监测、智慧...
- STM32通过NB-IoT模块实现远程告警推送
-
一、项目概述本系统以STM32F103C8T6作为主控核心,通过串口控制NB-IoT通信模块(移远BC26),实现对外设状态的远程监测和异常自动告警推送(如温度超限、设备震动异常等)。支持通过UDP或...
- MicroPython 玩转硬件系列3:上电执行程序
-
1.引言上一篇:MicroPython玩转硬件系列2:点灯实验我们在ESP32上实现了LED灯的闪烁,但是有一个问题,该功能的实现需要我们在串口终端里去手动执行代码,可不可以让ESP32上电后自动...
- 打标机与上位机通讯异常如何快速定位?串口工具验证流程拆解
-
打标机与上位机通信过程中出现的错误问题需要通过串口通信助手验证,主要原因在于串口通信的底层特性以及问题隔离的工程需求。以下是原理说明和验证方法:一、验证原理底层数据透明化串口通信本质上是基于二进制数据...
- 4G短信猫发送中文短信(Python)(4g短信)
-
4G短信猫发送中文短信(Python)4G短信猫发送中文短信的方式可以使用TEXT模式或者PDU模式。1.TEXT模式在TEXT模式下发送中文短信的指令序列:AT+CSCS="UCS2...
- ESP32如何刷microPython固件(esp32 固件升级)
-
目录为什么要刷microPython固件固件和工具的获取刷固件的步骤检验是否成功1.为什么要刷固件microPython是由计算机工程师DamienGeorge设计出来的,他的初衷是——用Pyth...
- CH9329双头线使用说明(双头线是干什么用的)
-
目录1.介绍说明2.测试说明3.修改为ASCII模式(CH9328字符模式)常见问题解答:1.介绍说明CH9329双头线是集成了CH9329+CH340芯片的成品线,主要作用是使用主控电脑发送串口指令...
- Windows下最简单的ESP8266_ROTS_ESP-IDF环境搭建与腾讯云SDK编译
-
前言其实也没啥可说的,只是我感觉ESP-IDF对新手来说很不友好,很容易踩坑,尤其是对业余DIY爱好者搭建环境非常困难,即使有官方文档,或者网上的其他文档,但是还是很容易踩坑,多研究,记住两点就行了,...
- CPU眼里的:Python 和 C(cpp和python)
-
“Python跟C语言有什么联系?它们在计算机系统中分别扮演着什么角色?”01提出问题Python可能是当今最热门的编程语言,凭借简洁易读的语法和强大的生态,成为许多新手程序员的首选。然而,作为一门解...
- Python在工控领域的应用与优势(python工业控制系统)
-
前言之前利用Python编写了一些S7系列的PLC调试工具和组态开发,今天就具体讲讲Python在工控领域还有哪些应用与优势。Python在工业控制工控领域的应用逐渐增多,得益于其简洁的语法、丰富的生...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python字典遍历 (54)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python读取文件夹下所有文件 (59)
- java调用python脚本 (56)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)