关于nginx的一些介绍

一、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 librarynginx 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.htmlproxy_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.mzph.cn/pingmian/23043.shtml

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

相关文章

VBA信息获取与处理第二个专题第五节:实际场景中随机数的利用

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程&#xff0c;目前已经是第一版修订了。这套教程定位于最高级&#xff0c;是学完初级&#xff0c;中级后的教程。这部教程给大家讲解的内容有&#xff1a;跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互…

Vxe UI vue 使用 VxeUI.previewImage() 图片预览方法

Vxe UI vue 使用 VxeUI.previewImage() 图片预览方法的调用 查看 github 代码 调用全局方法 VxeUI.previewImage() 参数说明&#xff1a; urlList&#xff1a;图片列表&#xff0c;支持传字符串&#xff0c;也可以传对象数组 [{url: xx’l}] activeIndex&#xff1a;指定默…

2. redis配置文件解析

redis配置文件解析 一、redis配置文件1、监听地址2、监听端口3、redis接收请求的队列长度3.1 修改系统参数/内核参数 4、客户端空闲的超时时间5、指定redis的pid文件6、定义错误日志7、定义数据库的数量8、定义持久化存储9、设置redis密码10、redis并发连接11、最大内存策略 二…

Windows Server FTP详解

搭建&#xff1a; Windows Server 2012R2 FTP服务介绍及搭建_windows2012server r2ftp怎么做&#xff1f;-CSDN博客 问题&#xff1a; https://www.cnblogs.com/123525-m/p/17448357.html Java使用 被动FTP&#xff08;PASV&#xff09; 被动FTP模式在数据连接建立过程中…

计算机网络 ——数据链路层(广域网)

计算机网络 —— 广域网 什么是广域网PPP协议PPP协议的三个部分PPP协议的帧格式 HDLC协议HDLC的站HDLC的帧样式 PPP和HDLC的异同 我们今天来看广域网。 什么是广域网 广域网&#xff08;Wide Area Network&#xff0c;简称WAN&#xff09;是一种地理覆盖范围广泛的计算机网络…

Redis篇 list类型在Redis中的命令操作

list在redis基本的命令 一.基本命令1.lpush和range2.lpushx rpushx3.lpop rpop4.lindex linsert llen5.lrem6.ltrim lset7.blpop brpop 一.基本命令 list在redis中相当于数组或者顺序表. 1.lpush和range 2.lpushx rpushx 3.lpop rpop 4.lindex linsert llen 如果要插入的列表中…

【Kubernetes】9-Pod控制器

一、什么是 pod 的控制器 Pod控制器&#xff0c;又称之为工作负载&#xff08;workload&#xff09;&#xff0c;是用于实现管理pod的中间层 确保pod资源符合预期状态&#xff1b;pod的资源故障时会进行重启&#xff1b; 当重启策略无效时&#xff0c;则会重新新建pod的资源 二…

一维时间序列信号的小波时间散射变换(MATLAB 2021)

小波散射变换的目的在于获取第一层次的特征信息&#xff0c;即免疫平移、轻微形变的信息。而低通的滤波器能够获取输入信号的概貌&#xff0c;获取反映其整体大尺度特征的信息&#xff0c;以图像为例&#xff0c;由低通滤波器选取的信号对于图像的平移、伸缩、旋转等局部变化有…

Mysql 常用命令 详细大全【分步详解】

1、启动和停止MySQL服务 // 暂停服务 默认 80 net stop mysql80// 启动服务 net start mysql80// 任意地方启动 mysql 客户端的连接 mysql -u root -p 2、输入密码 3、数据库 4、DDL&#xff08;Data Definition Language &#xff09;数据 定义语言, 用来定义数据库对象(数…

空间不够用了怎么办

空间告急啊哥们 整理一下清理空间有用的一些blog吧。 【linux】公共服务器如何清理过多的.cache缓存 linux根目录空间不足&#xff0c;追加空间到根目录下 【linux】linux磁盘空间 目录查看清理 和 文件查看清理

simulink如何配置自动代码生成

simulink如何配置我们的自动代码生成 仿真时间设置我们仿真我们这个模型的一个时间&#xff0c;目前默认它是10秒。如果把它改成“INF”&#xff0c;它就是会一直仿真。 求解器选择&#xff0c;因为我们使用的是嵌入式代码&#xff0c;因此我们一般嵌入式是一个数字量。所以选…

【AI大模型】Transformers大模型库(三):特殊标记(special tokens)

目录​​​​​​​ 一、引言 二、特殊标记&#xff08;special tokens&#xff09; 2.1 概述 2.2 主要功能 2.3 代码示例 三、总结 一、引言 这里的Transformers指的是huggingface开发的大模型库&#xff0c;为huggingface上数以万计的预训练大模型提供预测、训练等服…

RK3568技术笔记之二 SAIL-RK3568开发板介绍

开发板是我们自己的&#xff0c;后面我用开发板和工控机来做技术笔记。不用多讲。我先把核心板和开发板规格书搬过来&#xff0c;这篇文章里都是自己的知识产权&#xff0c;所以就不标准引用来源了。 先看看核心板的规格书吧。 再来一下开发板的规格书 看完规格书&#xff0c;…

用cocos2d-python绘制游戏开发的新篇章

用cocos2d-python绘制游戏开发的新篇章 第一部分&#xff1a;背景 在游戏开发的世界中&#xff0c;寻找一个强大而灵活的框架至关重要。cocos2d-python是一个Python游戏开发框架&#xff0c;它提供了一套丰富的功能&#xff0c;用于创建2D游戏、图形和交互式应用。基于流行的c…

如何在 Java 中使用 JOptionPane 显示消息对话框

在 Java 开发中&#xff0c;JOptionPane 是一个非常实用的类&#xff0c;可以用来显示各种类型的对话框&#xff0c;例如信息对话框、警告对话框、错误对话框等。今天&#xff0c;我们将深入探讨如何使用 JOptionPane.showMessageDialog 方法来显示消息对话框&#xff0c;以及如…

完美的移动端 UI 风格

完美的移动端 UI 风格

webgl_decals

ThreeJS 官方案例学习&#xff08;webgl_decals&#xff09; 1.效果图 2.源码 <template><div><div id"container"></div></div> </template> <script> // 光线投射相关代码 https://threejs.org/docs/index.html#api/z…

干货满满!Stable Diffusion 从入门到精通之提示词手册,免费分享,自学转行,零基础首选!

Stable Diffusion 技术把 AI 图像生成提高到了一个全新高度&#xff0c;文生图 Text to image 生成质量很大程度上取决于你的提示词 Prompt 好不好。本文从“如何写好提示词”出发&#xff0c;从提示词构成、调整规则和 AIGC辅助工具等角度&#xff0c;对文生图的提示词输入进行…

模式识别涉及的常用算法

一、线性回归 1.算法执行流程&#xff1a; 算法的执行流程可以简述如下&#xff1a; 导入必要的库&#xff1a; 导入NumPy库&#xff0c;用于数值计算。导入Matplotlib库&#xff0c;用于数据可视化。导入Pandas库&#xff0c;用于数据处理&#xff08;尽管在这个例子中&#…

开关电源基本原理1

目录 内容概述 关于电感 认识电感 电感充电 电感储能 电感充电 电感参数 电感放电 利用电感升压 电感电流波形 伏秒法则 电流纹波率 电感电流三种导电模式 电流纹波率与频率的关系 电流纹波率与电感值的关系 电感值与电感体积 电路纹波率r的最优值 电感值与电…