nginx在Linux上搭建

2023-11-08

一.Nginx介绍和常用功能

1.Nginx介绍

‌ Nginx是一个高性能的HTTP和反向代理web服务器(百度百科的介绍)

‌2.常见功能

‌ 1)Http代理,反向代理:

‌   作为web服务器最常用的功能之一,尤其是反向代理(正向代理和反向代理不理解的可以看https://www.jianshu.com/p/ae76c223c6ef、https://blog.csdn.net/tsummerb/article/details/79248015)

‌ 

 2)负载均衡策略:

‌   轮询:平均将请求分发给web服务器

‌   weight:权重

‌   ip_hash:使同一个ip客户端去访问同一个服务器

‌   least_conn:把请求转发给连接数较少的后端服务器

‌    

‌  

‌ 

‌二.安装Nginx

2.linux下安装

2.1 环境准备

1)安装gcc

‌说明:安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境

命令:yum install gcc-c++

 

 2)安装pcre pcre-devel

‌说明:PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库

    命令:yum install -y pcre pcre-devel

   

3)安装zlib

‌ 说明:zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库

命令:yum install -y zlib zlib-devel

 

4) 安装OpenSSL

说明‌:OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库

命令:yum install -y openssl openssl-devel

.2 安装nginx

1)去官网下载安装包(https://nginx.org/en/download.html

   

2)将安装包上传到Linux服务器,我放在/usr/local/nginx下(没有nginx自己建一个目录)

3)解压

cd到上一步的压缩包的位置解压文件

tar -zxvf nginx-1.16.1.tar.gz

4)配置、编译、安装

cd到ngnix-1.16.1的目录下配置

./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf --with-http_stub_status_module --with-http_ssl_module

   make(编译)

   make install(安装)

5)启动ngnix

cd 到/usr/local/ngnix/sbin

./nginx启动

     在linux浏览器输入你自己linux的ip,如看到如下内容即启动成功

如需在外面访问需要关闭linux的防火墙

  暂时关闭防火墙systemctl stop firewalld

  永久关闭防火墙systemctl disable firewalld

       

 

快速关闭 ./nginx -s stop

安全关闭 ./nginx -s quit

重载配置文件 ./nginx -s reload

查看nginx进程 ps -ef|grep nginx

 

三 Nginx的配置(最重要)

  nginx.conf大致格式如下

主要由6个部分(重点学习http、server、location)

  1. ‌‌main:用于进行nginx全局信息的配置
  2. events:用于nginx工作模式的配置
  3. http:用于进行http协议信息的一些配置
  4. server:用于进行服务器访问信息的配置
  5. location:用于进行访问路由的配置
  6. upstream:用于进行负载均衡的配置

1)main模块

‌  # user nobody nobody;

   worker_processes 2;

  # error_log logs/error.log

  # error_log logs/error.log notice

  # error_log logs/error.log info

  # pid logs/nginx.pid

  worker_rlimit_nofile 1024;

  解释:

  1. ‌user:用来指定nginx worker进程运行用户以及用户组,默认nobody账号运行
  2. worker_processes:指定nginx要开启的子进程数量,运行过程中监控每个进程消耗内存(一般几M~几十M不等)根据实际情况进行调整,通常数量是CPU内核数量的整数倍
  3. ‌error_log:定义错误日志文件的位置及输出级别【debug / info / notice / warn / error / crit】
  4. ‌pid:用来指定进程id的存储文件的位置
  5. ‌worker_rlimit_nofile:用于指定一个进程可以打开最多文件数量的描述

‌2)event 模块

 ‌ event {

  worker_connections 1024;

   multi_accept on;

   use epoll;

  }

‌ 解释:

  1. worker_connections:最大连接数
  2. ‌multi_accept:设置一个进程是否同时接受多个网络连接,默认为off
  3. ‌use:事件驱动模型select|poll|kqueue|epoll|resig|/dev/poll|

‌eventport

‌3) http模

包含server、localhost、upstream在456分别说

   http {

   include mime.types;

  default_type application/octet-stream;

   #access_log off;

   log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式

   access_log log/access.log myFormat; #

   sendfile on;

   sendfile_max_chunk 100k;

   keepalive_timeout 65;

‌  解释:

  1. include; #文件扩展名与文件类型映射表
  2. ‌default_type; #默认文件类型,默认为text/plain
  3. ‌access_log ; #取消服务日志
  4. log_format;#自定义格式
  5. ‌access_log log/access.lo; #combined为日志格式的默认值
  6. ‌sendfile;#允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
  7. ‌sendfile_max_chunk 100k;#每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
  8. ‌keepalive_timeout 65; #连接超时时间,默认为75s,可以在http,server,location块。
  9. ‌‌error_page 404 https://www.baidu.com; #错误页

‌4) server模块

 server {

listen 80;#监听的端口

server_name  localhost ;

root /nginx/www;

index index.php index.html index.html;

charset utf-8;

access_log logs/access.log;

error_log logs/error.log;

......

}

‌解释(主要是server和server_name)

  1. server:一个虚拟主机的配置,一个http中可以配置多个server
  2. server_name:用你指定ip地址或者域名,多个配置之间用空格分隔
  3. ‌root:表示整个server虚拟主机内的根目录,所有当前主机中web项目的根目录
  4. ‌index:用户访问web网站时的全局首页
  5. ‌charset:用于设置www/路径中配置的网页的默认编码格式
  6. ‌access_log:用于指定该虚拟主机服务器中的访问记录日志存放路径
  7. ‌error_log:用于指定该虚拟主机服务器中访问错误日志的存放路径

注意:

‌1.启动nginx你服务的端口就是80,

  如你设置为8081则访问ip:8081或者你配置的server_name

‌2.server_name 可以正则匹配如下:

  server_name ~^www\d+\.testyx\.com$

‌  server_name ~^(www\.)?(.+)$

‌  这里正则表达式必须以“~”开头,而且使用时不要忘记设置"^" 和"$"

  

‌‌5)localhost模块

  location / {

‌       #root path;

‌       #index vv.txt;

‌       proxy_pass 192.168.8.109:8089;

‌        #deny 127.0.0.1; #拒绝的ip

‌       #allow 172.18.5.54; #允许的ip

‌   }

‌解释

  1. location /:
  2. ‌‌
  3. ‌index :默认页
  4. proxy_pass:为你代理转发的服务器地址

‌注意:

root都是用来存放你静态代码的地方

 server root , location root 区别

‌‌‌‌6)upstream模块

  upstream tomcats{

‌    server 192.168.8.110:8080;

‌    server 192.168.8.110:8081;

‌    server 192.168.8.110:8082;

 ‌ }

‌ 主要是用来做负载均衡的(具体应用可看下一章节--负载均衡)

  1. down:表示当前的server暂时不参与负载均衡;
  2. ‌backup:预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻;
  3. ‌max_fails:允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误;
  4. ‌fail_timeout:在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。

 

‌ 

四、反向代理

 

4.1在nginx.conf修改添加

 ‌‌  server { ‌

‌    listen 80; ‌

‌    server_name localhost www.testyx.com;

‌   location / {

‌     proxy_pass http://192.168.8.108:8081;

‌     index index.html;

 ‌   }

‌   }

4.2并在linux启动一个tomcat,其端口为8081

‌4.3测试访问测试

‌   http://localhost:80

   ‌http://www.testyx.com:80

   http://192.168.8.108:80 

‌   http://192.168.8.108:8081 

五、负载均衡

‌5.1在linux中安装3个tomcat服务端口分别为8080、8081、8082

‌具体安装见链接:

https://blog.csdn.net/qq_23832313/article/details/83584564

‌安装以后如下:

‌修改3个tomcat下的index.jsp

 

5.2配置ngnix的配置

‌ngnix.conf修改

upstream tomcats{

‌ server 192.168.8.110:8080;

‌ server 192.168.8.110:8081;

‌ server 192.168.8.110:8082;

‌}

‌server {

‌ listen 80;

‌ server_name localhost;

location / {

‌ proxy_pass http://tomcats;

‌ index index.html index.html;

‌}

5.3启动nginx测试

‌ 输入自己Linux的ip:80

5.4负载均衡其他策略

  5.4.1热备

‌   在本地启动2个tomcat端口分别为8080和8081,

‌   访问localhost可以看到只会访问到8080

‌   关闭8080的tomcat,在访问localhost可以看到会访问8081

‌   配置如下:

    upstream tomcats{

  server 192.168.8.108:8080 ;

  server 192.168.8.108:8081 backup;

  }

server {

listen 80;

server_name localhost www.testyx.com;

location / {

proxy_pass http://tomcats;

index index.html;

}

}   

  5.4.2轮询

   第五章节的第一个例子就是轮询‌  

  5.4.3加权轮询

upstream tomcats{

    server 192.168.8.108:8080 weight=1 ;

   server 192.168.8.108:8081 weight=2 ;

   server 192.168.8.108:8082 weight=4 ;

    }

‌  5.4.4ip_hash

    nginx会让相同的客户端ip请求相同的服务器

‌   upstream tomcats{

   server 192.168.8.108:8080 ;

   server 192.168.8.108:8081 ;

   server 192.168.8.108:8082 ;

    ip_hash;

   }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nginx在Linux上搭建 的相关文章

  • JS逆向之网易云音乐

    文章目录 1 目标网站 2 初步分析 3 定位加密参数生成位置 4 编码测试 4 1 定义AES加密方法 4 2 调用两次AES加密获取params 4 3 获取歌曲的url 4 4 单曲下载初步测试代码 4 5 飙升榜单音乐批量抓取 文章
  • MySql中把一个表的数据插入到另一个表中

    1 如果2张表的字段一致 并且希望插入全部数据 可以用这种方法 INSERT INTO 目标表 SELECT FROM 来源表 例如 insert into insertTest select from insertTest2 2 如果只希
  • 2020年加密货币领域的5大做市商,都有谁?

    什么是加密货币做市 与传统做市商相比 加密货币做市是一个新的事物 本文旨在更好地了解加密货币做市商的行为 首先 让我们通过探索对做市流程的基本了解来研究什么是做市 简而言之 做市是一种交易活动 交易员同时向金融市场上的交易双方 买方和卖方
  • 超详细图解!【MySQL进阶篇】MySQL架构原理

    MySQL体系架构 MySQL Server架构自顶向下大致可以分网络连接层 服务层 存储引擎层和系统文件层 一 网络连接层 客户端连接器 Client Connectors 提供与MySQL服务器建立的支持 目前几乎支持所有主流 的服务端
  • 基于人工蜂群算法的函数寻优算法

    文章目录 一 理论基础 二 算法流程 1 初始化阶段 2 引领蜂阶段 3 跟随蜂阶段 4 侦察蜂阶段 5 食物源 三 MATLAB程序实现 1 清空环境变量 2 问题设定 3 参数设置 4 初始化蜜蜂种群 5 迭代优化 6 结果显示 四 参
  • php 发送邮箱 Email

    步骤一 phpmailer 很好 无论原生还是放到框架下 phpmailer下载地址 https github com PHPMailer PHPMailer
  • 华中农业大学数学实验期末考试答案(matlab)

    1 这题通过生成一个全是1的矩阵 然后加上一个对角阵就行了 A ones 10 10 3 diag 0 9 DET A det A INV A inv A 2 这一题之前我写过一个求线性方程组的小程序 求解线性方程组 3 function
  • 【mmdetection】使用自定义的coco格式数据集进行训练及测试

    目录 一 mmdetection简介 二 环境安装 1 安装教程 2 运行demo测试环境是否安装成功 三 训练自定义的dataset 1 准备dataset 2 Training前修改相关文件 3 Training 四 Testing 五
  • 使用FastApi服务解决程序反复调试导致速度过慢的问题(以tsfresh为例)

    对于多次调试的程序来说 重复执行如 读取数据 加载模型 得到导入的外部数据或三方库等重复操作的过程 可以使用网络服务搭建一个类似API一样的操作 一次读取 终身使用 整体的思路如下 本地搭建一个web服务 如本博客使用FastAPI 也可换
  • Java Session 会话技术

    一 Session简介 Session技术是将数据存储在服务器端的技术 会每个客户端都创建一块内存空间存储客户的数据 但客户端需要都携带一个标识ID去服务器中寻找属于自己的内存空间 所以说Session的实现是基于Cookie Sessio
  • 超参数优化--随机网格法

    随机网格搜索RandomizedSearchCV 在网格搜索时我们提到 伴随着数据和模型的复杂度提升 网格搜索所需要的时间急剧增加 以随机森林算法为例 如果使用过万的数据 搜索时间则会立刻上升好几个小时 因此 我们急需寻找到一种更加高效的超
  • vue 数组添加数据

    vue 数据添加分为三种方法 1 unshift 2 push 3 splice
  • vue点击导航 页面自动滚动到特定位置

    vue点击导航 页面自动滚动到特定位置 效果预览 1 npm i element ui S 下载安装element组件库 导航我们使用element组件库中的样式 type primary 刚好作为我们导航激活后的样式 省去了我们写样式的时
  • AVR 中 delay 函数的调用注意事项!delay_ns delay_ms

    早就知道AVR的编译器有自带的延时子函数 或者说是头文件 但一直没时间一探究竟 今天终于揭开了其内幕 AVR编译器众多 可谓是百家齐鸣 本人独尊WinAVR 说明 编译器版本WinAVR 20080610 先说winAVR的 Delay h
  • java 远程连接_java连接远程服务器(示例代码)

    我用的是smb协议 共享方式连接远程 Windows服务器 也可以用ftp 但要保证服务器是ftp的 连接Linux服务器可以用ssh 协议 新建一个res properites连接 IP 10 61 28 56 SMB MINGCHENG
  • 第7章 指针 第1题

    题目 用原型 void getDate int dd int mm int yy 写一个函数 从键盘读入一个形如dd mmm yy的日期 其中dd是一个1位或2位的表示日的整数 mmm是月份的3个字母的缩写 yy是两位数的年份 函数读入这个
  • teamviewer连接不上的原因及解决方法有哪些

    teamviewer连接不上的原因及解决方法有哪些 一 总结 一句话总结 这里说的就是版本问题 高版本可以连接低版本 低版本无法连接高版本 1 TeamViewer官方检测使用环境是否为商用的标准是什么 1 自安装软件以来 累计连接的电脑多
  • 这个人就是吴恩达(Andrew Ng),百度新任首席科学家

    这个人就是吴恩达 Andrew Ng 百度新任首席科学家 虎嗅 2013 05 11 10 32 收藏43 评论35 虎嗅注 人工智能现在是科技界最前沿的话题之一 以谷歌为代表 科技巨头均在这个方向上进行巨大投入 虎嗅曾发表过一篇文章 谷歌
  • 【神兵利器】介绍一款基于GPT-4完全免费的编程软件:Cursor!

    Cursor 一款基于GPT 4完全免费的编程软件 PS 文章首发于公众号 字节卷动 官网地址 官网 https www cursor so IDE作者 https twitter com amanrsanger 这是我找到的第一个免费的
  • python比较两个csv文件,并打印出不同的行号,列号,数据

    https blog csdn net The Handsome Sir article details 121251433 def compareFile file1 file2 如果相等返回 1 0 0 如果不相等返回 0 a b a

随机推荐

  • 【满分】【华为OD机试真题2023 JS】AI处理器组合

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 AI处理器组合 知识点数组 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 某公司研发了一款高性能AI处理器 每台物理设备具备8颗AI处理器 编号分别为0 1 2
  • Y形电路与三角电路转换,网孔和节点分析法

    Y形电路与三角电路转换 网孔和节点分析法 Y形电路与三角电路转换 推导过程与之前的电压源和电流源的转换类似 用系数相等即可等价转换 此处直接给出结论与记法 网孔分析法 自电阻 在这个网孔中所有电阻的和 互电阻 网孔1与网孔2之间的电阻 将每
  • 机器学习——决策树算法

    一 实验目的 掌握如何实现决策树算法 用并决策树算法完成预测 二 实验内容 本次实验任务我们使用贷款申请样本数据表 该数据表中每列数据分别代表ID 年龄 高薪 有房 信贷情况 类别 我们根据如下数据生成决策树 使用代码来实现该决策树算法 三
  • Linux->线程库接口

    目录 前言 1 进程和线程 2 线程库接口 2 1 线程库基础理解 2 2 创建线程 2 2 线程资源回收 2 3 线程分离 前言 本篇主要是对Linux原装线程库的函数接口进行学习 还有一部分的线程概念补充 1 进程和线程 博主在上一篇文
  • android--emo的来源

    文章目录 前言 第一次安装 bug出现了 idea配置android开发环境 碰运气 重新下载 导入项目 测试成功 感悟 前言 记录一下我安装android studio的心路历程 为什么就我遇到这么多问题 第一次安装 这学期新开的移动应用
  • python选择与循环结构之判断三角形:任意输入三个整数作为三角形边长,判断三条边能否构成三角形,并判断是等边三角形、等腰三角形,直角三角形,还是一般三角形。

    问题描述 任意输入三个整数作为三角形边长 判断三条边能否构成三角形 并判断是等边三角形 等腰三角形 直角三角形 还是一般三角形 实现代码如下 a int input 请输入a b int input 请输入b c int input 请输入
  • Winsock Error Codes

    Winsock Error Codes 10004 WSAEINTRInterrupted function call This error indicates that a blocking call was interrupted by
  • JavaScript 严格模式(use strict)

    JavaScript严格模式 又称为 use strict 模式 是JavaScript语言的一种更严格的运行模式 严格模式规定了一些限制 用于防止程序员犯一些常见的错误 以保证代码的正确性和安全性 在JavaScript严格模式中 不允许
  • 刷脸支付智慧经营创业红利赢在坚持不懈

    这是一个最好的时代 我们身处繁华的都市 有着一个体面稳定的工作 科技日新月异 生活便捷高效 这是一个最坏的时代 房价水涨船高 工资涨幅完全跟不上物价的涨幅 8090后年轻人们面临着巨大的生活压力 钱 成为了禁锢他们的牢笼 在这个时代 普通人
  • Mybatis如何处理Result Maps collection already contains value for xxx异常呢?

    转自 Mybatis如何处理Result Maps collection already contains value for xxx异常呢 下文笔者讲述一次mybatis异常的处理分享 如下所示 Mybatis异常摘要 2022 08 1
  • Java初识RabbitMQ一交换机(fanout exchange)

    扇型交换机 funout exchange 将消息路由给绑定到它身上的所有队列 而不理会绑定的路由键 如果 N 个队列绑定到某个扇型交换机上 当有消息发送给此扇型交换机时 交换机会将消息的拷贝分别发送给这所有的 N 个队列 因为扇型交换机投
  • 取消已设置为SVN的文件夹(清理SVN标志)

    取消CheckOut后的文件与svn的联系 Windows Registry Editor Version 5 00 HKEY LOCAL MACHINE SOFTWARE Classes Folder shell DeleteSVN 删除
  • 代码随想录训练营第14天

    参考 代码随想录 一 理论基础 一 二叉树的种类 满二叉树 完全二叉树 二叉搜索树 平衡二叉搜索树 二 二叉树的存储方式 顺序存储 顺序存储的元素在内存中是连续分布的 通常用数组来存储 如果父节点的数组下标是 i 那么它的左孩子就是 i 2
  • ucos学习资料、论坛等

    论坛 http bbs elecfans com forum php mod forumdisplay fid 301 typeid 505 教程推荐 第一步 嵌入式实时操作系统 COS II原理及应用 任哲编著 首选任哲的这本书 我建议先
  • 对IOC和DI的通俗理解

    学习过spring框架的人一定都会听过Spring的IoC 控制反转 DI 依赖注入 这两个概念 对于初学Spring的人来说 总觉得IoC DI这两个概念是模糊不清的 是很难理解的 今天和大家分享网上的一些技术大牛们对Spring框架的I
  • Flink ML API,为实时机器学习设计的算法接口与迭代引擎

    摘要 本文整理自阿里巴巴高级技术专家林东 阿里巴巴技术专家高赟 云骞 在 Flink Forward Asia 2021 核心技术专场的演讲 主要内容包括 面向实时机器学习的 API 流批一体的迭代引擎 Flink ML 生态建设 一 面向
  • Linux下快速查看CPU使用情况的相关命令

    Linux下快速查看CPU使用情况比较常用的命令是free top ps 这篇文章来看下如何在Linux下检查服务器的CPU使用情况 我的Linux是Linux Ubuntu server 15 04 如果是图形界面 有些统计会看起来更直观
  • Intellij Idea创建一个简单的java项目

    2016年11月12日 我即将要离开象牙塔 校园 踏入社会 想想未来我是某个公司的一个程序员 再对比一下小时的梦想 好像出入挺大的 今天我不得不为即将的工作准备 一个java开发工程师 但是我现在是一个小小的菜鸟 所以要学习 好了 不说这些
  • 简单说说对QT中moveToThread实现多线程操作的理解

    在平时的编码过程中经常碰到QT的多线程问题 也大量接触了QT中的两种主流多线程写法 一种是继承QThread类并重载run函数 在run函数中写一个状态机或者计时器来实现对线程运作 一种是通过moveToThread的方式实现事件托管从而实
  • nginx在Linux上搭建

    一 Nginx介绍和常用功能 1 Nginx介绍 Nginx是一个高性能的HTTP和反向代理 服务器 百度百科的介绍 常见功能 Http代理 反向代理 作为web服务器最常用的功能之一 尤其是反向代理 正向代理和反向代理不理解的可以看htt