Linux中安装Nginx及日常配置使用

高性能的http服务器/反向代理服务器。官方测试支持5万并发,CPU、内存等消耗较低且运行稳定

使用场景

  • Http服务器。
    Nginx可以单独提供Http服务,做为静态网页的服务器。
  • 虚拟主机。
    可以在一台服务器虚拟出多个网站。
  • 反向代理与负载均衡。
    Nginx做反向代理,可以使多个服务器之间分担负载,不会造成某台服务器负载高宕机或者某台服务器十分闲置。

Linux环境安装Nginx

官方网站

  1. 安装依赖包
# SSL功能需要openssl库,直接通过yum安装: 
yum install openssl# gzip模块需要zlib库,直接通过yum安装: 
yum install zlib# rewrite模块需要pcre库,直接通过yum安装: 
yum install pcre

或者直接安装以上三个依赖,命令:

yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

在这里插入图片描述
在这里插入图片描述

  1. 创建一个用于存放Nginx的文件夹在这里插入图片描述

  2. 下载Nginxtar包到自己的文件夹。
    命令:wget http://nginx.org/download/nginx-1.22.0.tar.gz
    提示:wget: command not found
    解决:yum -y install wget
    在这里插入图片描述
    在这里插入图片描述

  3. 解压tar包。
    命令:tar -xvf nginx-1.22.0.tar.gz nginx
    在这里插入图片描述

  4. 安装模块。
    进入Nginx目录,执行命令:
    ./configure
    报错:./configure: error: C compiler cc is not found
    解决:yum -y install gcc gcc-c++ autoconf automake make
    报错:./configure: error: the HTTP gzip module requires the zlib library. You can either disable the module by using --without-http_gzip_module option, or install the zlib library into the system, or build the zlib library statically from the source with nginx by using --with-zlib=<path> option.
    解决:yum install -y zlib-devel
    在这里插入图片描述

  5. 安装Nginx
    命令: make install
    在这里插入图片描述

  6. 安装完成


Nginx常用命令

进入Nginx安装目录下的sbin目录

  1. 启动
    命令:./nginx
    在这里插入图片描述

  2. 查看是否启动
    命令:ps ef | grep nginx
    在这里插入图片描述

  3. 关闭
    命令:nginx -s stop或者nginx -s quit

  4. 重启,重新加载配置文件
    命令:nginx -s reload

  5. 修改conf下监听端口为81


防火墙配置

  1. 查看所有打开的端口
    命令:firewall-cmd --zone=public --list-ports
    在这里插入图片描述

  2. 开放指定端口号
    命令:firewall-cmd --zone=public --add-port=81/tcp --permanent
    在这里插入图片描述

  3. 重新载入
    命令:firewall-cmd --reload
    在这里插入图片描述


Nginx无法重启

描述:Restarting nginx daemon: nginxnginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory) nginx not running

解决:Nginx -c参数指定配置文件解决
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf


Nginx访问

【IP + 端口号 80默认不显示】
在这里插入图片描述


Nginx基本配置说明

  • main:全局设置。影响其他部分所有设置。
  • server:主机服务相关设置,主要用于指定虚拟主机域名、IP和端口号等。
  • location:URL匹配特定位置后的设置,反向代理、内容篡改的相关设置。
  • upstream:上游服务器设置和负载均衡相关设置。

Nginx常用功能配置

反向代理
server {listen 80;server_name wh.test.com;location /api {# 反向代理的地址# 所有 /api 的接口访问都代理到 7075 端口例如:wh.test.com/api/login.do -> http://localhost:7050/login.doproxy_pass http://localhost:7075/;}
}

访问控制:黑名单
server {location / {# 屏蔽单个ip访问deny 172.16.60.220;# 屏蔽所有ipdeny all;# 允许ip访问allow 172.16.60.220;}
}

在这里插入图片描述
在这里插入图片描述


负载均衡:轮询

每次请求会按时间顺序逐一分配到不同的服务器,如果有服务宕机,Nginx会剔除掉宕机服务器,继续分配请求。

如果其中一台服务器压力太大,出现延迟,会影响所有的这台服务器下的用户请求。

http {  upstream test.com {  server 192.168.10.1:8081;  server 192.168.10.2:8082;  server 192.168.10.3:8083;  }  server {  location /test {  proxy_pass  http://test.com/;  }  }  
}

负载均衡:权重

理想状态下,10次请求中有6次请求了8081,1次请求了8082,3次请求了8083

http {  upstream test.com {  server 192.168.10.1:8081 weight=6;  server 192.168.10.2:8082 weight=1;  server 192.168.10.3:8083 weight=3;  }  server {  location /test {  proxy_pass  http://test.com/;  }  }  
}

负载均衡:Hash

计算方式:abs(客户端ip.hash())%服务器数量。

客户端的IP地址是唯一不变的。所以,通过hash算法计算出ip地址对应的哈希值,通过哈希码值对服务器数量进行一个求模式运算。这样就可以保持每个客户端访问的服务器是保持不变的。因为哈希算法散列的特点,也可以近似的当作平均分配。

http {  upstream test.com {  ip_hash;server 192.168.10.1:8081;  server 192.168.10.2:8082;  server 192.168.10.3:8083;  }  server {  location /test {  proxy_pass  http://test.com/;  }  }  
}

负载均衡:最小连接数

基于最小连接的负载均衡方式,Nginx会将请求发送给当前处理请求数量最少的服务器上,用来分担各个服务器之间的压力。

http {  upstream test.com {  least_conn;server 192.168.10.1:8081;  server 192.168.10.2:8082;  server 192.168.10.3:8083;  }  server {  location /test {  proxy_pass  http://test.com/;  }  }  
}

gzip压缩

开启gzip压缩可以减少http传输过程中文件的大小。可以极大提高网站的访问速度。

gzip  on; # 开启gzip 压缩
gzip_types; # 要采用 gzip 压缩的 MIME 文件类型,其中 text/html 被系统强制启用
gzip_static on; # 默认 off,该模块启用后,Nginx 首先检查是否存在请求静态文件的 gz 结尾的文件,如果有则直接返回该 .gz 文件内容
gzip_proxied expired no-cache no-store private auth; # 默认 off,nginx 做为反向代理时启用,用于设置启用或禁用从代理服务器上收到相应内容 gzip 压缩
gzip_buffers 16 8k; # 获取多少内存用于缓存压缩结果,16 8k 表示以 8k*16 为单位获得
gzip_min_length 1k; # 允许压缩的页面最小字节数,页面字节数从 header 头中的 Content-Length 中进行获取。默认值是 0,不管页面多大都压缩。建议设置成大于 1k 的字节数,小于 1k 可能会越压越大
gzip_comp_level 4; # gzip 压缩比,压缩级别是 1-91 压缩级别最低,9 最高,级别越高压缩率越大,压缩时间越长,建议 4-6
gzip_http_version 1.0; # 默认 1.1,启用 gzip 所需的 HTTP 最低版本
gzip_vary off; # 用于在响应消息头中添加 VaryAccept-Encoding,使代理服务器根据请求头中的 Accept-Encoding 识别是否启用 gzip 压缩
gzip_disable "MSIE [1-6]\.";// 指定哪些不需要 gzip 压缩的浏览器

Http静态资源服务器
server {  listen       80;  server_name  localhost;  #后台管理location /handadmin{alias  /opt/home/handbook/dist/;index index.html;}  
}

动静分离

Nginx设置expires可以指定访问缓存。设置之后,用户在指定的时间都只会访问浏览器中的缓存,而不会去请求Nginx

# 静态请求
location ~ \.(gif|jpg|jpeg|png|bmp|swf|css|js) {  root /usr/local/dist;  expires 10h; # 设置过期时间为10小时  
}  # 动态请求
location ~ \.(do) {  proxy_pass  127.0.0.1:8081;  
} 

图片防盗链

防止其他网站利用外链访问服务器图片

server {  listen 8081;  server_name  localhost;  # 图片防盗链  location ~* \.(gif|jpg|jpeg|png|bmp|swf) {  valid_referers none blocked server_names ~\.google\. ~\.baidu\. *.qq.com;  # 只允许本机 IP 外链引用,将百度和谷歌也加入白名单有利于 SEO  if (invalid_referer){  return 403;  }  }  
} 

适配PC

根据用户请求的user-agent来判断返回PC还是H5

server {  listen 80;  server_name test.com;  location / {  root  /usr/local/app/pc; # pc 的 html 路径  if ($http_user_agent ~* '(Android|webOS|iPhone|iPod|BlackBerry)') {  root /usr/local/app/mobile; # mobile 的 html 路径  }  index index.html;  }  
} 

设置二级域名
server {  listen 80;  server_name admin.test.com; // 二级域名  location / {  root  /usr/local/app/admin; # 二级域名的 html 路径  index index.html;  }  
} 

配置Https
server{  listen 443 ssl http2; # 这里还启用了 http/2.0ssl_certificate /etc/letsencrypt/live/test.com/fullchain.pem; # 证书文件地址  ssl_certificate_key /etc/letsencrypt/live/test.com/privkey.pem; # 私钥文件地址  server_name test.com www.test.com; # 证书绑定的域名  
}

配置Http转Https
server {  listen      80;  server_name  www.test.com;  # 单域名重定向  if (host = 'www.test.com'){  return 301 https://www.test1.com;  }  # 全局非 https 协议时重定向  if (scheme != 'https') {  return 301 https://server_name$request_uri;  }  # 或者全部重定向  return 301 https://server_name$request_uri;  
}

禁止指定user_agent
# http_user_agent 为浏览器标识  
# 禁止 user_agent 为baidu、360和sohu,~*表示不区分大小写匹配  
if (http_user_agent ~* 'baidu|360|sohu') {  return 404;
}  # 禁止 Scrapy 等工具的抓取  
if (http_user_agent ~* (Scrapy|Curl|HttpClient)) {  return 403; 
}#### 请求过滤
#### 根据请求类型过滤# 非指定请求全返回 403  
if ( request_method !~ ^(GET|POST|HEAD) ) {  return 403;  
}  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/695374.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LaWGPT—基于中文法律知识的大模型

文章目录 LaWGPT&#xff1a;基于中文法律知识的大语言模型数据构建模型及训练步骤两个阶段二次训练流程指令精调步骤计算资源 项目结构模型部署及推理 LawGPT_zh&#xff1a;中文法律大模型&#xff08;獬豸&#xff09;数据构建知识问答模型推理训练步骤 LaWGPT&#xff1a;基…

c++用户管理信息(双向链表)

c用户管理信息---双向链表 ListStu双向链表--&#xff08;把前面的单链表改一下&#xff0c;就直接可以用&#xff09;ListStu.hListStu.cpp ListStu双向链表–&#xff08;把前面的单链表改一下&#xff0c;就直接可以用&#xff09; ListStu.h #pragma once #include "…

yarn常用命令小记

安装 npm install -g yarn查看版本 yarn -v初始化项目与依赖管理 yarn init&#xff1a;与npm init一样通过交互式会话生成一个新的package.jason文件以初始化项目&#xff1b;跳过会话可使用yarn init --yes&#xff0c;简写yarn init -yyarn add <package><versi…

【转载】企业资产收集与脆弱性检查工具

简介 云图极速版是针对拥有攻击面管理需求的用户打造的 SaaS 应用&#xff0c;致力于协助用户管理互联网资产攻击面的 SaaS 化订阅服务产品。可实现对备案域名、子域名、IP、端口、服务、网站、漏洞、安全风险等场景进行周期性监控&#xff0c;支持多维度分析攻击面。利用可视化…

java 中开源的html解析库Jsoup 简单例子

下面是一个使用Jsoup库解析HTML的简单Java例子。这个例子展示了如何使用Jsoup从一个HTML字符串中提取数据。 首先&#xff0c;确保你已经将Jsoup作为依赖项添加到你的项目中。如果你使用的是Maven&#xff0c;可以在pom.xml文件中添加以下依赖&#xff1a; &…

《图解设计模式》笔记(一)适应设计模式

图灵社区 - 图解设计模式 - 随书下载 评论区 雨帆 2017-01-11 16:14:04 对于设计模式&#xff0c;我个人认为&#xff0c;其实代码和设计原则才是最好的老师。理解了 SOLID&#xff0c;如何 SOLID&#xff0c;自然而然地就用起来设计模式了。Github 上有一个 tdd-training&…

【达梦数据库】通过系统函数来配置sqllog

环境说明&#xff1a;达梦2024年Q4季度版之后版本支持 通过系统函数进行sqllog参数配置 -- 新增模式 SLOG_CONFIG1 和 SLOG_CONFIG2&#xff1a; SP_SET_SQLLOG_INI([SLOG_CONFIG1]FILE_PATH../log;PART_STOR0;[SLOG_CONFIG2]SWITCH_MODE2;SWITCH_LIMIT128);-- 删除模式名为 S…

redis复习笔记06(小滴课堂)

分布式锁核心知识介绍和注意事项 基于Redis实现分布式锁的几种坑 综合伪代码&#xff1a; 运行&#xff1a;

PDF加粗内容重复读取解决方案

文章目录 前言发现问题解决方案问题分析大致逻辑 show my code 前言 在使用pdfplumber读取PDF的过程中&#xff0c;由于加黑的内容会被莫名其妙的读取两次&#xff0c;带来了很大的困扰。这篇文章将给出解决方案。 发现问题 在在使用pdfplumber读取PDF的过程中&#xff0c;读…

LLaMA 2 - 你所需要的一切资源

摘录 关于 LLaMA 2 的全部资源&#xff0c;如何去测试、训练并部署它。 LLaMA 2 是一个由 Meta 开发的大型语言模型&#xff0c;是 LLaMA 1 的继任者。LLaMA 2 可通过 AWS、Hugging Face 等提供商获取&#xff0c;并免费用于研究和商业用途。LLaMA 2 预训练模型在 2 万亿个标记…

HarmonyOS开发技术全面分析

系统定义 HarmonyOS 是一款 “ 面向未来 ” 、面向全场景&#xff08;移动办公、运动健康、社交通信、媒体娱乐等&#xff09;的分布式操作系统。在传统的单设备系统能力的基础上&#xff0c;HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念&#xff0c;能够…

python读写文件操作的三大基本步骤

目录 基本步骤 常用函数 open()函数 close()函数 read()函数 readlines()函数 readline()函数 write()函数 writelines()函数 with语句 读写操作的应用&#xff1a; 拷贝文件 with 语句的嵌套 逐行拷贝 基本步骤 1. 打开文件&#xff1a;open(filepath, mode, en…

探索亚马逊自养号测评的实际效果与使用感受

自养号在亚马逊测评中的应用给了我们一种全新的体验。通过使用亚马逊自养号&#xff0c;我们发现了许多令人满意的优势&#xff0c;这些优势不仅提升了我们的测评效率&#xff0c;还增加了我们的信誉度。 首先&#xff0c;自养号的质量可控性给了我们极大的信心。我们可以自行…

css中, grid-auto-rows: 怎样简写在grid:中

grid-auto-rows:100px; grid-template-columns:1fr 1fr; &#x1f446;可以写成&#x1f447; grid:auto-flow 100px / 1fr 1fr;在CSS Grid布局中&#xff0c;grid-auto-rows 属性用于指定自动生成的网格容器的行的大小。如果你想要将 grid-auto-rows 的值简写在 grid 属性中&a…

基于CNN-GRU-Attention的时间序列回归预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 CNN&#xff08;卷积神经网络&#xff09;部分 4.2 GRU&#xff08;门控循环单元&#xff09;部分 4.3 Attention机制部分 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版…

【Vue渗透】Vue站点渗透思路

原文地址 极核GetShell 前言 本文经验适用于前端用Webpack打包的Vue站点&#xff0c;阅读完本文&#xff0c;可以识别出Webpack打包的Vue站点&#xff0c;同时可以发现该Vue站点的路由。 成果而言&#xff1a;可能可以发现未授权访问。 识别Vue 识别出Webpack打包的Vue站…

FFmpeg的HEVC解码器源代码学习笔记-1

一直想写一个HEVC的码流解析工具&#xff0c;看了雷神264码流解析工具&#xff0c;本来想尝试模仿写一个相似的265码流分析工具&#xff0c;但是发现265的解码过程和结构体和264的不太一样&#xff0c;很多结构体并没有完全暴露出来&#xff0c;没有想到很好的方法获得量化参数…

关键字查找,将匹配到的词标红

效果图&#xff1a; 候补 特别说明&#xff1a; 该文有很多新奇的用法&#xff0c;包括载入ui文件、连接信号和控件等等&#xff0c;有很多值得学习的地方 具体实现&#xff1a; 配置文件 #! [0] QT widgets uitoolsHEADERS textfinder.h SOURCES textfinder.cpp main.cpp…

自增a++和自减a--详细解析

1.自增、自减运算符是什么&#xff0c;有什么作用&#xff0c;需要注意什么? 、–;对当前变量值1、-1只能操作变量&#xff0c;不能操作字面量 2.自增、自减运算符放在变量前后有区别吗? 如果单独使用放前放后是没有区别的非单独使用:在变量前&#xff0c;先进行变量自增/…

unity学习(36)——角色选取界面(自制美工)

1.添加一个背景图片&#xff0c;记不住可以查之前的资料&#xff08;4&#xff09; 图片拖入asset&#xff0c;属性设成sprite&#xff1b;把图片拖到source image中&#xff1b;colour白色&#xff08;透明&#xff0c;点一下右边的笔即可&#xff09;&#xff1b;material为…