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;基…

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

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

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

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

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

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

HarmonyOS开发技术全面分析

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

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

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

基于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;没有想到很好的方法获得量化参数…

自增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为…

SpringCloud-Gateway网关的使用

本文介绍如何再 SpringCloud 项目中引入 Gateway 网关并完成网关服务的调用。Gateway 网关是一个在微服务架构中起到入口和路由控制的关键组件。它负责处理客户端请求&#xff0c;进行路由决策&#xff0c;并将请求转发到相应的微服务。Gateway 网关还可以实现负载均衡、安全认…

vue大文件读取部分内容,避免重复加载大文件,造成流量浪费

使用场景&#xff1a;项目点云地图是pcd文件&#xff0c;但是文件可能上百兆&#xff0c;我需要获取到文件中的版本信息&#xff0c;跟本地的缓存文件做比较&#xff0c;如果不一致&#xff0c;才会加载整个文件。从而节省流量。 避免重复加载整个“.pcd文件&#xff0c;以最大…

【PX4学习笔记】04.QGC地面站的使用

目录 文章目录 目录PX4代码烧入PX4固件代码的烧入方式1PX4固件代码的烧入方式2 QGC地面站的基础使用连接地面站的方式查看关键的硬件信息 QGC地面站的Application Settings模块Application Settings模块-常规界面单位其他设置数据持久化飞机中的数传日志飞行视图计划视图自动连…

观察者模式, 发布-订阅模式, 监听器模式

观察者模式, 发布-订阅模式, 监听器模式 观察者模式 观察者模式是一种行为型设计模式, 定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新 角色模型和结构图 在观察者模式中&#xff0c;只有两种…

HarmonyOS Stage模型基本概念讲解

本文 我们来说harmonyos中的一种应用模型 Stage模型 官方提供了两种模型 一种是早期的 FA模型 另一种就是就是 harmonyos 3.1才开始的新增的一种模型 Stage模型 目前来讲 Stage 会成为现在乃至将来 长期推进的一种模型 也就是 无论是 现在的harmonyos 4.0 乃至 之后要发布的 …

IP地理位置查询定位:技术原理与实际应用

在互联网时代&#xff0c;IP地址是连接世界的桥梁&#xff0c;而了解IP地址的地理位置对于网络管理、个性化服务以及安全监控都至关重要。IP数据云将深入探讨IP地理位置查询定位的技术原理、实际应用场景以及相关的隐私保护问题&#xff0c;旨在为读者提供全面了解和应用该技术…

印刷机械故障诊断:虹科MSR165助力Müller Martini AG成功案例

在为杂志装订机开发新产品的过程中&#xff0c;作为印刷后处理机械领域的全球领导者&#xff0c;Mller Martini AG公司发现了传感器故障的问题。通过使用虹科MSR 微型加速度数据记录仪&#xff0c;成功地确定了故障的原因。 新杂志装订机中的三刀修整装置的故障部件是边缘传感器…

BOSS直聘招聘经验

招聘低端兼职岗位。流量很大&#xff0c;来的人通常实力也不足。 招聘高端兼职岗位。流量不多。来的人通常具备一定实力。 招聘高薪职位&#xff0c;流量一般&#xff0c;会有有实力的勾搭。 招聘低薪职位&#xff0c;流量一般。通常没什么实力。

使用 Optimum Intel 在英特尔至强上加速 StarCoder: Q8/Q4 及投机解码

引言 近来&#xff0c;随着 BigCode 的 StarCoder 以及 Meta AI 的 Code Llama 等诸多先进模型的发布&#xff0c;代码生成模型变得炙手可热。同时&#xff0c;业界也涌现出了大量的致力于优化大语言模型 (LLM) 的运行速度及易用性的工作。我们很高兴能够分享我们在英特尔至强 …