关于nginx的一些介绍

news2025/1/19 20:31:46

一、Nginx 简介

中文简介文档

二、Centos 安装 Nginx

2.1 安装编译工具及库文件

$ yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

2.2 安装 pcre

pcre 作用是 Nginx 支持 Rewrite 功能

$ cd /usr/local/src
$ wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
$ tar zxvf pcre-8.35.tar.gz
$ cd pcre-8.35
$ ./configure
$ make && make install
$ pcre-config --version
8.35

2.3 编译安装 nginx

Nginx 下载地址

# 查看编译的帮助文档
$ ./configure --help

  # 如果下面几个参数没有设置, 默认都放在 --prefix 指定的路径下
  --prefix=PATH                      set installation prefix
  --sbin-path=PATH                   set nginx binary pathname
  --modules-path=PATH                set modules path
  --conf-path=PATH                   set nginx.conf pathname
  --error-log-path=PATH              set error log pathname
  --pid-path=PATH                    set nginx.pid pathname
  --lock-path=PATH                   set nginx.lock pathname

 # --with 和 --without 是确认需要使用什么模块和不使用哪些模块
 # --with: 默认不会被编译进 nginx 中, 编译需要手动指定
 --with-*****
 # --without: 默认会被编译进 nginx 中, 不编译需要手动指定
 --without-*****
 
# 使用默认编译
$ ./configure --prefix=/app/nginx/    # 将nginx 编译到 /app/nginx 目录下
# 编译完成后会输出如下信息: 
...
Configuration summary
  + using system PCRE library
  + OpenSSL library is not used
  + using system zlib library

  nginx path prefix: "/app/nginx/"
  nginx binary file: "/app/nginx//sbin/nginx"
  nginx modules path: "/app/nginx//modules"
  nginx configuration prefix: "/app/nginx//conf"
  nginx configuration file: "/app/nginx//conf/nginx.conf"
  nginx pid file: "/app/nginx//logs/nginx.pid"
  nginx error log file: "/app/nginx//logs/error.log"
  nginx http access log file: "/app/nginx//logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"
  
# 编译完成后, 会在 nginx/objs/ 目录(中间文件)下生成 ngx_modules.c 文件, 这个文件包含了编译时会被编译进去的模块
$ cat objs/ngx_modules.c
...

$ make && make install

$ cd /app/nginx && ll
drwxr-xr-x. 2 root root 4096 820 18:56 conf
drwxr-xr-x. 2 root root   40 820 18:56 html
drwxr-xr-x. 2 root root    6 820 18:56 logs
drwxr-xr-x. 2 root root   19 820 18:56 sbin

三、Nginx 常用命令

$ cd /usr/local/nginx/

3.1 帮助

$ sbin/nginx -help
nginx version: nginx/1.19.6
Usage: nginx [-?hvVtTq] [-s signal] [-p prefix]
             [-e filename] [-c filename] [-g directives]

Options:
  -?,-h         : this help
  -v            : show version and exit
  -V            : show version and configure options then exit
  -t            : test configuration and exit
  -T            : test configuration, dump it and exit
  -q            : suppress non-error messages during configuration testing
  -s signal     : send signal to a master process: stop, quit, reopen, reload
  -p prefix     : set prefix path (default: /usr/local/nginx/)
  -e filename   : set error log file (default: logs/error.log)
  -c filename   : set configuration file (default: conf/nginx.conf)
  -g directives : set global directives out of configuration file

3.2 启动

$ ps -ef | grep nginx
root      17986  11127  0 18:49 pts/0    00:00:00 grep --color=auto nginx
$ sbin/nginx 
$ ps -ef | grep nginx
root      17989      1  0 18:49 ?        00:00:00 nginx: master process sbin/nginx
nobody    17990  17989  0 18:49 ?        00:00:00 nginx: worker process
root      17992  11127  0 18:49 pts/0    00:00:00 grep --color=auto nginx

3.3 暴力停止

$ sbin/nginx -s stop

3.4 优雅停止

$ sbin/nginx -s quit

3.4 重新加载配置文件

$ sbin/nginx -s reload

3.5 指定启动的配置文件

$ sbin/nginx -c /usr/local/nginx/conf/nginx.conf

3.6 热部署

四、Nginx 配置文件

4.1 配置文件路径

$ cd /usr/local/nginx/conf
$ ll
总用量 68
...
-rw-r--r--. 1 root root 2656 19 18:45 nginx.conf
...

4.2 配置文件内容

配置文件包含如下三部分:

  1. 全局块:

    比如处理并发数的配置 -> worker_processes 1;

  2. events 块: 影响 Nginx 服务器与用户的网络连接

    由 events 标签括起来的内容, 比如支持最大的连接数 -> worker_connections 1024;

  3. http 块

    1. http 全局块
    2. server 块

五、反向代理1

效果: 在浏览器中输入 www.kino.com 跳转到 tomcat 主页面中

5.1 部署 tomcat

下载tomcat

$ tar -zxvf apache-tomcat-9.0.41.tar.gz
$ mv apache-tomcat-9.0.41 tomcat-8080
$ cd tomcat-8080
$ bin/startop.sh
$ ps -ef | grep tomcat
root      18406      1 41 19:12 pts/1    00:00:02 /usr/local/jdk1.8.0_131/bin/java -Djava.util.logging.config.file=/opt/software/tomcat-8080/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /opt/software/tomcat-8080/bin/bootstrap.jar:/opt/software/tomcat-8080/bin/tomcat-juli.jar -Dcatalina.base=/opt/software/tomcat-8080 -Dcatalina.home=/opt/software/tomcat-8080 -Djava.io.tmpdir=/opt/software/tomcat-8080/temp org.apache.catalina.startup.Bootstrap start
root      18440  18303  0 19:13 pts/1    00:00:00 grep --color=auto tomcat

如果有防火墙, 开启8080 端口

$ firewall-cmd --add-port=8080/tcp --permanent
success
$ firewall-cmd --reload

在浏览器中输入: 虚拟机ip:8080, 即可访问 tomcat 页面

在这里插入图片描述

5.2 配置 Nginx

$ vim conf/nginx.conf
server {
        listen       80;
        server_name  192.168.220.111;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            proxy_pass  http://192.168.220.111:8080;
            index  index.html index.htm;
        }
...

重新加载配置文件

$ sbin/nginx -s reload

在浏览器中输入: www.kino.com

在这里插入图片描述

六、反向代理2

效果: 根据不同的路径跳转到不同的端口服务中, nginx 监听 9091端口, 访问: 192.168.220.111:9091/edu 跳转到 8080的tomcat, 访问 192.168.220.111:9092/vod 跳转到 8081 端口的tomcat

准备两个tomcat, 修改 tomcat 配置文件改端口

$ cp -R tomcat-8080 tomcat-8081
$ vim tomcat-8081/conf/server.xml
<Server port="8005" shutdown="SHUTDOWN">
改为
<Server port="8006" shutdown="SHUTDOWN">

<Connector port="8080" protocol="HTTP/1.1"
改为
<Connector port="8081" protocol="HTTP/1.1"

在两个tomcat 的 webapps 目录下创建 nginx 目录, 并创建 login.html

$ mkdir tomcat-8080/webapps/edu
$ mkdir tomcat-8081/webapps/vod
$ vim tomcat-8080/webapps/edu/login.html
<html>
  <head>
    <title>tomcat-8080</title>
  </head>
  <body>
    <h1>tomcat-8080</h1>
  </body>
</html>
$ vim tomcat-8080/webapps/vod/login.html
<html>
  <head>
    <title>tomcat-8081</title>
  </head>
  <body>
    <h1>tomcat-8081</h1>
  </body>
</html>

启动两个tomcat

$ tomcat-8080/bin/startup.sh 
Using CATALINA_BASE:   /opt/software/tomcat-8080
Using CATALINA_HOME:   /opt/software/tomcat-8080
Using CATALINA_TMPDIR: /opt/software/tomcat-8080/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_131
Using CLASSPATH:       /opt/software/tomcat-8080/bin/bootstrap.jar:/opt/software/tomcat-8080/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
$ tomcat-8081/bin/startup.sh 
Using CATALINA_BASE:   /opt/software/tomcat-8081
Using CATALINA_HOME:   /opt/software/tomcat-8081
Using CATALINA_TMPDIR: /opt/software/tomcat-8081/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_131
Using CLASSPATH:       /opt/software/tomcat-8081/bin/bootstrap.jar:/opt/software/tomcat-8081/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

有防火墙就开放端口

$ firewall-cmd --add-port=8081/tcp --permanent
success
$ firewall-cmd --reload

在浏览器访问两个tomcat的login.html

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

配置 Nginx

server {
        listen       9091;
        server_name  192.168.220.111;

        location ~ /edu/ {
            # alias /opt/nginx/a.html
            proxy_pass  http://192.168.220.111:8080;
        }

        location ~ /vod/ {
            proxy_pass  http://192.168.220.111:8081;
        }
    }
...

重新加载 Nginx 配置文件

$ sbin/nginx -s reload

在浏览器中访问: 192.168.220.111:9091/edu/login.html192.168.220.111:9092/vod/login.html

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

七、负载均衡

效果: 在浏览器中输入 192.168.220.111/edu/login.html, 平均分配到 8080 和 8081 端口上

准备如上两个tomcat, 将 vod 修改成 edu

$ mv /opt/software/tomcat-8081/webapps/vod/ /opt/software/tomcat-8081/webapps/edu
$ ll /opt/software/tomcat-8081/webapps/
总用量 4
drwxr-x---. 15 root root 4096 19 19:27 docs
drwxr-xr-x.  2 root root   24 19 19:35 edu
drwxr-x---.  7 root root   99 19 19:27 examples
drwxr-x---.  6 root root   79 19 19:27 host-manager
drwxr-x---.  6 root root  114 19 19:27 manager
drwxr-x---.  3 root root  223 19 19:27 ROOT
$ /opt/software/tomcat-8081/bin/shutdown.sh
$ /opt/software/tomcat-8081/bin/startup.sh

编辑 Nginx 配置文件

$ vim conf/nginx.conf
http {
...
    upstream kinoserver{
        server 192.168.220.111:8080;
        server 192.168.220.111:8081;
    }


    server {
        listen       80;
        server_name  192.168.220.111;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
           proxy_pass  http://kinoserver;
           root  html;
           index  index.html  index.htm;
        }
...

重新加载 Nginx 配置文件

$ sbin/nginx -s reload

在浏览器中输入: 192.168.220.111/edu/login.html, nginx 将以轮询(默认)的方式进行负载均衡

此外 upstream 还有另外两种分配策略:

  • 按权重(weight): 指定轮询几率, weight 和访问率成正比, 用于服务器性能不均的情况;
     upstream kinoserver{
          server 192.168.220.111:8080 weight=5;
          server 192.168.220.111:8081 weight=10;
      }
    
  • 按IP hash(ip_hash): 按每个请求的ip进行hash结果分配, 这样每个访客固定一个后端服务器, 可以解决 Session 问题;
     upstream kinoserver{
          ip_hash;
          server 192.168.220.111:8080;
          server 192.168.220.111:8081;
      }
    
  • 第三方(fair): 按后台服务器的响应时间来分配请求, 响应时间短的游侠分配, 和 weight 分配策略类似;
    upstream kinoserver{
         server 192.168.220.111:8080;
         server 192.168.220.111:8081;
         fair;
     }
    

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

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

相关文章

VUE3 学习笔记(12):对比Vuex与Pinia状态管理的基本理解

在组件传值中&#xff0c;当嵌套关系越来越复杂的时候必然会将混乱&#xff0c;是否可以把一些值存在一个公共位置&#xff0c;无须传值直接调用呢&#xff1f;VUEX应运而生&#xff0c;但是从VUE3开始对VUEX的支持就不那么高了&#xff0c;官方推荐使用Pinia。 Vuex配置 ST1:…

1.1 OpenCV随手简记(一)

OpenCV学习篇 OpenCV (Open Source Computer Vision Library) 是一个开源的计算机视觉库&#xff0c;它提供了大量的算法和函数&#xff0c;用于图像处理、计算机视觉和机器学习等领域。 1. OpenCV 简介 1.1 OpenCV 的起源和发展 OpenCV 项目始于 1999 年&#xff0c;由 In…

【C#学习笔记】属性和字段

文章目录 前言属性和字段的区别字段访问修饰符和关键字定义变量类型的定义变量命名变量的赋值 属性 不同的使用情况 前言 最近在工作的过程中常常会觉得自己在程序设计方面的能力还是有欠缺。例如一直对于变量的声明感到不足&#xff0c;在工作中为了图方便总是直接public定义…

计算机图形学入门06:视口变换

在前面的内容中&#xff0c;在MVP变换(模型变换&#xff0c;视图变换&#xff0c;投影变换)完后&#xff0c;所有的物体位置都变换到了[-1, 1]的标准立方体里&#xff0c;下一步要把物体绘制到屏幕(Screen)上。 1.什么是屏幕&#xff1f; 对于图形学来说把屏幕抽象的认为是一个…

解锁EasyRecovery2024专业版!仅需一键点击恢复数据即可完美数据恢复

EasyRecovery2024是一款专业的数据恢复软件&#xff0c;它能够帮助用户找回因各种原因丢失的数据。然而&#xff0c;有些用户为了节省开支&#xff0c;可能会寻找破解版&#xff0c;也就是所谓的crack版本。但是&#xff0c;使用破解版软件存在很多风险&#xff0c;包括但不限于…

开关电源基本原理2

目录 开关电源的传递函数 电感量的计算​编辑 Buck电路分析 Boost电路分析 Buck-Boost电路分析 开关电源的传递函数 占空比Dton/Tton/(tontoff) 由EtVontonVofftoff 得 &#xff08;适用于所有拓扑&#xff09; 表1.三种变换器的传递函数 电感量的计算 其中&#xf…

高效数据处理的前沿:【C++】、【Redis】、【人工智能】与【大数据】的深度整合

目录 1.为什么选择 C 和 Redis&#xff1f; 2.人工智能与大数据的背景 1.大数据的挑战 2.人工智能的需求 3.C 与 Redis 的完美结合 1.安装 Redis 和 Redis C 客户端 2.连接 Redis 并进行数据操作 高级数据操作 列表操作 哈希操作 4.与大数据和人工智能结合 5.实际应…

Vue3-Ref Reactive toRef toRefs对比学习、标签ref与组件ref

响应式数据&#xff1a; Ref 作用&#xff1a;定义响应式变量。 语法&#xff1a;let xxx ref(初始值)(里面可以是任何规定内类型、数组等)。 返回值&#xff1a;一个RefImpl的实例对象&#xff0c;简称ref对象或ref&#xff0c;ref对象的value属性是响应式的。 注意点&am…

AndroidStudio中debug.keystore的创建和配置使用

1.如果没有debug.keystore,可以按照下面方法创建 首先在C:\Users\Admin\.android路径下打开cmd窗口 之后输入命令:keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -validity 10000 输入两次密码(密码不可见,打码处随便填写没关系) 2.在build…

【DSP】xDAIS算法标准

1. 简介 在安装DSP开发支持包时&#xff0c;有名为 “xdais_7_21_01_07”文件夹。xDAIS全称: TMS320 DSP Algorithm Standard(算法标准)。39条规则&#xff0c;15条指南。参考文档。参考文章。 2. 三个层次 3.接口 XDAIS Digital Media。编解码引擎。VISA&#xff08;Video&…

PS的抠图算法原理剖析 1

以这个抠tree为例子 在PS里&#xff0c;操作过程是让你开启R G B三个通道 分别看一下 哪一个的对比最明显 上面的图片 树叶肯定B最少 天空B富裕&#xff0c;所以对比最明显的就用B通道 然后使用一些奇怪的函数&#xff0c;把texture.bbb这张图片变成黑白&#xff0c;纯黑纯白 那…

高通开发系列 - 借助libhybris库实现Linux系统中使用Andorid库

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 返回:专栏总目录 目录 概述Android代码下载和编译aarch64开发环境libhybris下载和编译libhybris测试验证调用库中的函数概述 我主要是基于…

Renesas MCU之定时器计数功能应用

目录 概述 1 功能介绍 1.1 时钟相关配置 1.2 应用接口 2 FSP配置Project参数 2.1 软件版本信息 2.2 配置参数 2.3 项目生成 3 定时器功能代码实现 3.1 定时器初始化函数 3.2 定时器回调函数 4 功能测试 5 参考文档 概述 本文主要介绍Renesas MCU的定时器功能的基…

图像背景去除工具:removebg

文章目录 简介面向不同用户价格 简介 removebg&#xff0c;就是remove background&#xff0c;是一款智能图片背景去除工具。 在免费使用时&#xff0c;用到的是本地的CPU。我第一次试用时&#xff0c;图片刚上传之后&#xff0c;电脑的帧率便直线下降&#xff0c;鼠标都拖不…

[Redis]Zset类型

Zset有序集合相对于字符串、列表、哈希、集合来说会有一些陌生。 它保留了集合不能有重复成员的特点&#xff0c;但与集合不同的是&#xff0c;有序集合中的每个元素都有一个唯一的浮点类型的分数&#xff08;score&#xff09;与之关联&#xff0c;着使得有序集合中的元素是可…

深度学习笔记:2.Jupyter Notebook

Jupyter Notebook 常用操作快捷键魔法指令_jupyter notebook快捷键调用函数-CSDN博客https://blog.csdn.net/qq_26917905/article/details/137211336?ops_request_misc%257B%2522request%255Fid%2522%253A%2522171748112816800182160793%2522%252C%2522scm%2522%253A%25222014…

Redis 异常三连环

本文针对一种特殊情况下的Reids连环异常&#xff0c;分别是下面三种异常&#xff1a; NullPointerException: Cannot read the array length because “arg” is nullJedisDataException: ERR Protocol error: invalid bulk lengthJedisConnectionException: Unexpected end o…

产品经理的AI大模型实战指南:驾驭未来,引领创新

前言&#xff1a; 在数字化浪潮席卷全球的今天&#xff0c;AI大模型正以其惊人的潜力和速度&#xff0c;重塑着各行各业的生态。对于产品经理而言&#xff0c;如何在这场变革中站稳脚跟&#xff0c;甚至引领潮流&#xff0c;成为了一个亟待解决的问题。为此&#xff0c;我们特…

vue对图片进行裁剪

安装依赖&#xff1a; npm install cropperjs -save <template><div class"bigBox"><h3>预览</h3><!-- 裁剪按钮--><el-button click"sureSava">裁剪</el-button><el-button click"confirm">确…

前端 Web 与原生应用端 WebView 通信交互 - HarmonyOS Next

基于鸿蒙 HarmonyOS Next 与前端 Vue 通信交互相关小结; DevEco Studio NEXT Developer Preview2 Vue js 两端相互拟定好协议后,通过前端页面的点击事件,将所需的数据传输给原生移动端组件方法中,处理后将消息回传至前端. 根据官方文档的案例尝试,但没成功 ... 后经过几经尝试…