Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >web服务器nginx的基本使用与配置

web服务器nginx的基本使用与配置

作者头像
IT不难
发布于 2022-05-14 08:22:07
发布于 2022-05-14 08:22:07
1.5K00
代码可运行
举报
文章被收录于专栏:IT不难技术家园IT不难技术家园
运行总次数:0
代码可运行

前言

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,使用方面。

安装配置

安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum -y install nginx 

创建目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
## 日志目录
mkdir /data/log/nginx/ && chown -R nginx:nginx /data/log/nginx/

## 缓存目录
mkdir -p /var/cache/nginx/ && chown -R nginx:nginx /var/cache/nginx/

配置文件nginx.conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
user nobody;
worker_processes auto;  #nginx对外提供web服务时的worker进程数
error_log /data/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;  #设置可由一个worker进程同时打开的最大连接数
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /data/log/nginx/access.log  main buffer=32k flush=30s;

    server_tokens       off; #关闭在错误页面中的nginx版本数字
    
    client_max_body_size 100m;

    sendfile            on;  #可以让sendfile函数发挥作用。sendfile函数可以在磁盘和TCP socket之间互相拷贝数据(或任意两个文件描述符)
    tcp_nopush          on;  #告诉nginx在一个数据包里发送所有头文件,而不一个接一个的发送
    tcp_nodelay         on;  #不缓存数据
    
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    #ssl 配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
    ssl_ecdh_curve secp384r1;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_session_tickets off;
    ssl_stapling on; 
    ssl_stapling_verify on;
    add_header Strict-Transport-Security "max-age=63072000; preload";
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";

    #nginx缓存
    fastcgi_cache_path /var/cache/nginx/  levels=1:2 keys_zone=wordpress:10m inactive=30m use_temp_path=off;
    fastcgi_cache_key $request_method$scheme$host$request_uri;
    fastcgi_cache_use_stale error timeout invalid_header updating http_500;
    fastcgi_cache_valid 200 301 302 10h;
    fastcgi_cache_valid 404 10m;
    fastcgi_ignore_headers Expires Set-Cookie Vary;

    #启动gzip
    gzip on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_comp_level 7;
    gzip_types
        text/css
        text/plain
        text/javascript
        application/javascript
        application/json
        application/x-javascript
        application/xml
        application/xml+rss
        application/xhtml+xml
        application/x-font-ttf
        application/x-font-opentype
        application/vnd.ms-fontobject
        image/svg+xml
        image/x-icon
        application/rss+xml
        application/atom_xml
        image/jpeg
        image/gif
        image/png
        image/icon
        image/bmp
        image/jpg;
    gzip_vary on;

    # for more information.
    include /etc/nginx/conf.d/*.conf;
}

启动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl enable --now nginx

高级用法

泛域名强制跳转

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
    listen 80;
    server_name *.chreagent.com;
    return 301 https://$http_host$request_uri;
}

基于客户端IP做并发访问控制

在主配置文件内添加

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        # 针对原始用户 IP 地址做限制
        ## 用户的 IP 地址 $binary_remote_addr 作为 Key,每个 IP 地址最多有 50 个并发连接
        ## 你想开 几千个连接 刷死我? 超过 50 个连接,直接返回 503 错误给你,根本不处理你的请求了
        limit_conn_zone $binary_remote_addr  zone=TotalConnLimitZone:20m ;
        limit_conn  TotalConnLimitZone  50;
        limit_conn_log_level notice;


        ## 针对原始用户 IP 地址做限制
        ## 用户的 IP 地址 $binary_remote_addr 作为 Key,每个 IP 地址每秒处理 10 个请求
        ## 你想用程序每秒几百次的刷我,没戏,再快了就不处理了,直接返回 503 错误给你
        limit_req_zone $binary_remote_addr  zone=ConnLimitZone:20m  rate=10r/s;
        #limit_req zone=ConnLimitZone burst=10 nodelay; #如果开启此条规则,burst=10的限制将会在nginx全局生效
        limit_req_log_level notice;

配置需要限制访问频率的server

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
## 具体服务器配置

server {

listen 80;

location ~ \.php$ {

## 最多 5 个排队, 由于每秒处理 10 个请求 + 5个排队,你一秒最多发送 15 个请求过来,再多就直接返回 503 错误给你了

limit_req zone=ConnLimitZone burst=5 nodelay;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

include fastcgi_params;

}

利用计划任务自动更新

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#每小时58分更新一次
58 * * * *  /usr/bin/sh  /opt/scripts/add_blackip_for_ddos.sh > /dev/null 2>&1

#没3分钟更新一次
*/3  * * * *  /usr/bin/sh  /opt/scripts/add_blackip_for_ddos_per_min.sh > /dev/null 2>&1
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash
h_time=`env LC_ALL=en_US.en date '+%e/%b/%G:%H'`
zjlog='/data/log/nginx/itbunan_access.log'
conf='/www/server/panel/vhost/nginx/blackip.conf'


#筛选攻击IP
tail -n  5000000 $zjlog  | grep "$h_time" |awk '{print  $1}'| sort -k 1 | uniq -c | sort -rnk 1 | grep -v '::' > /tmp/zj_blackip.txt
cat /tmp/zj_blackip.txt | awk '{if($1>400)print "deny "$2";"}' > $conf
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash
h_time=`env LC_ALL=en_US.en date '+%e/%b/%G:%H'`
zjlog='/data/log/nginx/itbunan_access.log'
conf='/www/server/panel/vhost/nginx/blackip.conf'


#筛选攻击IP
tail -n  5000000 $zjlog  | grep "$h_time" |awk '{print  $1}'| sort -k 1 | uniq -c | sort -rnk 1 | grep -v '::' > /tmp/zj_blackip.txt
cat /tmp/zj_blackip.txt | awk '{if($1>400)print "deny "$2";"}' > $conf

配置加载

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nginx  -s reload

FAQ

清除缓存

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rm -rf /var/cache/nginx/*

本文共 472 个字数,平均阅读时长 ≈ 2分钟

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Nginx配置详解完整指南
是山河呀
2025/07/20
5800
nginx优化指南
  nginx是一款高性能的开源Web服务器和反向代理服务器。它由俄罗斯的工程师Igor Sysoev开发,并于2004年首次公开发布。Nginx的设计目标是提供高性能、稳定性和低资源消耗的解决方案,以应对大流量的网站和应用程序。
码农心语
2024/04/09
1.4K0
nginx优化指南
Nginx/Tengine通用配置教程
Nginx/Tengine通用配置教程,包含多域名共用一个端口指向不同程序、Nginx负载均衡配置、Https配置、禁止通过IP访问、设置访问流量并发速率、Nginx反代PHP、Nginx反代Tomcat。 Nginx通用配置: user www www; worker_processes auto; worker_cpu_affinity auto; dso { load ngx_http_concat_module.so; load ngx_http_sysguard_module.so; }
4xx.me
2022/06/09
9990
Nginx/Tengine通用配置教程
nginx配置详解史上最全
当你需要配置Nginx服务器来托管网站或应用程序时,以下是一些基本步骤和示例配置,以帮助你入门。请注意,Nginx的配置可以非常灵活,可以根据你的具体需求进行自定义。以下示例假设你已经在服务器上安装了Nginx。
javaNice
2023/12/07
12.9K0
Nginx 常用的基础配置(web前端相关方面)
最近很多朋友通过趣站网问到Nginx配置前端 web 服务,所以特地写了这篇文章;希望能够帮助更多的朋友。
趣站网
2023/02/07
1.5K0
Nginx 常用的基础配置(web前端相关方面)
配置Nginx及安装SSL模块
Nginx是一个反向代理服务器。Nginx不仅可以部署网站,还可以用于配合WAF进行端口监听,如果某项目端口被该项目持续监听,同时防火墙设置拒绝外网访问该端口,Nginx可以将允许外网连接的自定义端口(未处于被监听状态,其它项目可监听该端口)访问请求转发至防火墙拒绝外网访问的端口,因为Nginx转发数据全程是在内网进行。
小新笔记坊
2024/03/12
1.8K0
2.Nginx进阶学习之最佳配置实践指南
描述:在企业线上生产环境中推荐进行Nginx编译安装,可以按照业务侧重点进行相应 Nginx 编译参数配置,所以编译参数不是功能加的越多越好,应该尽可能少编译模块不用的最好不要加入,本小结将以最新的Nginx版本以及依赖版本进行编译演示。
全栈工程师修炼指南
2022/09/29
2K0
2.Nginx进阶学习之最佳配置实践指南
centos7系统下安装nginx+php服务
nginx + php 用于运行大部分php开发的网站。前几篇文章,都是是运行与docker下的。如果系统不方便使用docker,直接在系统内配置 nginx+php服务
IT不难
2022/04/08
8950
centos7系统下安装nginx+php服务
【流量网关】Nginx 笔记——常见配置
主配置文件配置 # 指定运行worker进程的用户,一般不用 root 用户 user nginx; # 指定worker进程的数量,一般都是小于或者等于物理cpu核心数 worker_processes 1; # nginx错误日志存放文件,错误日志级别调整为warn,减少日志量,用于调试可设置为info或debug error_log /var/log/nginx/error.log warn; # pid文件存放nginx主控进程的进程号,通常不需要修改 pid /var/r
小白伪全栈
2022/01/06
9570
Ubuntu安装typecho博客
Typecho 是由 type 和 echo 两个词合成的,来自于开发团队的头脑风暴。
小陈运维
2023/12/08
4400
单机服务器部署Nginx/Node/Nuxt/React/NG,常规优化及自启脚本
PC官网(Angular6)/管理后台(umi+react)/移动端分享(Nuxt)/APP内嵌页(Nuxt)
CRPER
2018/12/27
1.2K0
nginx学习
格式:proxy_cache_path path [levels=numbers] keys_zone=zone_name:zone_size[inactive=time] [max_size=size]
是小张啊喂
2021/08/09
4280
【腾讯云前端性能优化大赛】WordPress 首屏极限优化探索
站点是基于 WordPress 的,所以非纯静态,动态站点。抛开环境去谈目标不切实际,在此基础上我尝试去做一些优化:
上山打老虎了
2022/01/02
1.2K1
4.Nginx安全加固与性能调优最佳指南
为了更好的指导部署与测试艺术升系统nginx网站服务器高性能同时下安全稳定运行,需要对nginx服务进行调优与加固;
全栈工程师修炼指南
2022/09/29
3.9K0
4.Nginx安全加固与性能调优最佳指南
开发工具Tools·Nginx 配置
Nginx 的 listen 指令用于监听指定的 IP 地址和端口号,配置形式为:listen <address>:<port>。若 IP 地址或端口缺失,Nginx 会以默认值来替换。
数媒派
2022/12/01
1.5K0
Linux中Nginx配置域名访问多个项目解决方案
首先是系统环境:CentOS7,Nginx版本:1.62(如需其他版本自行到官网下载)
芈亓
2022/06/17
3.7K0
Linux中Nginx配置域名访问多个项目解决方案
Nginx代理服务器环境快速搭建部署
步骤 01.nginx 配置文件准备执行如下命令写入到/app/nginx/conf/nginx.conf文件中
全栈工程师修炼指南
2022/09/29
9280
Nginx代理服务器环境快速搭建部署
nginx如何代理多个express服务
背景是这样的,我目前有一台服务器,域名已经申请了brzhang.club,证书也申请了,可以看到是https的,安全访问无污染,哈哈!
老码小张
2019/05/13
2.3K0
Nginx开源在线配置文件生成器 NginxConfig
Nginx Config 是一个强大的 Nginx 配置文件生成器,号称配置 Nginx 服务器所需的唯一工具。
Tinywan
2024/03/02
2.1K0
Nginx开源在线配置文件生成器 NginxConfig
Nginx反向代理负载均衡配置梳理大全
利用ngx_http_core_module、ngx_http_rewrite_module模块 主要是301跳转 Return写法:域名http请求跳转到对应的https请求
三杯水Plus
2018/11/14
8290
相关推荐
Nginx配置详解完整指南
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档