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.hqwc.cn/news/484160.html

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

相关文章

【Spring Cloud】实现微服务调用的负载均衡

文章目录 什么是负载均衡自定义实现负载均衡启动shop-product微服务通过nacos查看微服务的启动情况自定义实现负载均衡 基于Ribbon实现负载均衡添加注解修改服务调用的方法Ribbon支持的负载均衡策略通过修改配置来调整 Ribbon 的负载均衡策略通过注入Bean来调整 Ribbon 的负载均…

Shader基础的简单实现(基于URP渲染)

一个模型是很多个顶点组成&#xff0c;顶点数据中包含坐标、法线、切线、UV坐标、顶点颜色等等组成。 URP(Universal Render Pipeline)通用渲染管线&#xff0c;是Unity在2019.3版本之后推出的一种新的渲染管线。传统的渲染管线在渲染多光源的情况&#xff0c;是把每一个主要光…

由面试题“Redis是否为单线程”引发的思考

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

理论学习-ARM-内核

ARM内核 函数的调用加载、存储计算中断异常线程的切换注意事项参考文献 为了提高学习效率&#xff0c;我们要提前想好学习策略。 首先&#xff0c;使用频率越高的知识点&#xff0c;越要首先学习。假使&#xff0c;我们学习了一个知识点&#xff0c;能覆盖工作中80%的工作量&am…

大模型相关论文笔记

Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks 用于知识密集型NLP任务的检索增强生成 Facebook 2020 PDF CODE &#xff08;论文代码链接已失效&#xff0c;以上是最新链接&#xff09; 引言 大模型有幻觉问题&#xff08;hallucinations&#xff09;&…

【MATLAB源码-第143期】基于matlab的蝴蝶优化算法(BOA)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 蝴蝶优化算法&#xff08;Butterfly Optimization Algorithm, BOA&#xff09;是基于蝴蝶觅食行为的一种新颖的群体智能算法。它通过模拟蝴蝶个体在寻找食物过程中的嗅觉导向行为以及随机飞行行为&#xff0c;来探索解空间&a…

基于EasyCVR视频汇聚系统的公安网视频联网共享视频云平台建设思路分析(一)

随着社会的发展和科技的进步&#xff0c;视频监控系统在各个领域的应用越来越广泛&#xff0c;视频云平台建设已经成为了行业数字化转型的重要一环。公安网视频汇聚联网共享云的建设需要充分考虑技术、架构、安全、存储、计算等多方面因素&#xff0c;以确保平台的稳定性和可用…

【html学习笔记】3.表单元素

1.文本框 1.1 语法 <input type "text">表示文本框。且只能写一行 1.2 属性 使用属性size 设置文本框大小 <input type"text" size"10">2. 使用属性value 来设置文本框的默认文字 <input type"text" size"…

”戏说“ 交换机 与 路由器

一般意义上说 老哥 这文章发表 的 东一榔头 西一锤 呵呵&#xff0c; 想到哪里就啰嗦到哪里 。 交换机&#xff1a; 其实就是在通道交换 路由器&#xff1a; 不光是在通道交换还要在协议上交换 下图你看懂了吗&#xff1f; &#xff08;仅仅数据交换-交换机 协议…

petalinux_zynq7 驱动DAC以及ADC模块之六:qt显示adc波形

前文&#xff1a; petalinux_zynq7 C语言驱动DAC以及ADC模块之一&#xff1a;建立IPhttps://blog.csdn.net/qq_27158179/article/details/136234296petalinux_zynq7 C语言驱动DAC以及ADC模块之二&#xff1a;petalinuxhttps://blog.csdn.net/qq_27158179/article/details/1362…

【MySQL调优】Join语句优化知识点

相信绝大多数开发者&#xff0c;在开发的项目&#xff0c;因业务和需求逐渐复杂化、多元化后&#xff0c;会增加 Join 语句的使用&#xff0c;但是如果您不太了解 Join语句的规则&#xff0c;也许会逐步的拖垮数据库&#xff0c;乃至整个项目。 今天我们就来分享一下 Join优化…

springboot209基于web的大学生一体化服务平台的设计与实现

大学生一体化服务平台的设计与实现 摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统大学生综合服务信息管…