Nginx配置-程序员宅基地

技术标签: nginx  运维  服务器  

一、nginx常用配置命令

配置命令路径

/usr/local/nginx/sbin

查看nginx版本

./nginx -v

停止nginx服务

./nginx -s stop

启动nginx服务

./nginx

重新加载nginx,适用于当nginx.conf配置文件修改后,使用下面命令可以使得配置文件生效

./nginx -s reload

查看nginx服务是否运行

netstat -ntlp

在这里插入图片描述

二、nginx配置文件

由三部分组成

(一)、第一部分:全局块

nginx服务器全局生效的配置命令

worker_processes  1;   # 服务器并发处理能力,值越大并发能力越强(受自身配置限制)

(二)、第二部分:events块

影响nginx和用户网络的连接

worker_connections  1024;  #最大连接数1024个,需灵活配置

(三)、第三部分:http块

nginx配置最频繁的部分,比如代理,日志,缓存、第三方模块等等。
需要注意的是http块可以包括http全局块和server块

1、http全局块

包括文件引入、MIME-TYPE定义,日志自定义、连接超时等等

http {
    
    include       mime.types;      #文件扩展名与文件类型映射表
    default_type  application/octet-stream;  # 访问到未定义的扩展名的时候,就默认为下载该文件

2、server块

与虚拟主机有密切关系,主要是为了节省硬件成本
一个http块可以包含多个server块,而一个server块就等于一个虚拟主机
server块又包含全局server块和location块
全局server块

server {
    
    listen       8012;       #  目前监听的端口号
    server_name  localhost;  # 主机名称

3、location块

   location / {
         #表示默认首页
            root   html;
            index  index.html index.htm;

三、nginx配置反向代理

(一)、预计实现的效果

1、访问URL http://www.giunwr.cn:8012/xxx(不包括下面2种情况) 内部跳转到tomcat服务器8080端口
2、访问http://www.giunwr.cn:8012/8080/xxx 内部跳转到 http://www.giunwr.cn:8080/xxx
3、访问 http://www.giunwr.cn:8012/8081/xxx 内部跳转到 http://www.giunwr.cn:8081/xxx

(二)、前期准备

安装tomcat服务(需要安装2个,一个8080端口,一个8081端口)
下载tomcat,如果链接404,就到官网下再找个

wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.16/bin/apache-tomcat-10.0.16.tar.gz

在这里插入图片描述

安装过程

tar -zxvf  apache-tomcat-10.0.16.tar.gz # 解压
cd apache-tomcat-10.0.16  # 进入tomcat主目录
cd bin  # 进入bin目录
./startup.sh   # 启动tomcat服务

在这里插入图片描述
如果jdk报错
安装命令如下

yum -y install java-1.8.0-openjdk*

在这里插入图片描述

查看tomcat服务是否正常运行

cd logs/        #   进入日志路径
tail -f catalina.out    # 查看 tomcat运行日志

在这里插入图片描述
内网环境测试
可以正常访问
在这里插入图片描述
外网环境测试
emmm, 忘记开防火墙了(放行8080端口)
在这里插入图片描述
放行8080端口后,
访问URL http://www.giunwr.cn:8012
外网测试成功
在这里插入图片描述
修改tomcat默认端口
修改配置文件server.xml

apache-tomcat-10.0.16/conf   # 配置文件路径

在这里插入图片描述
在这里插入图片描述
测试文件的准备
在webapps目录下创建相关的html文件
在这里插入图片描述

(三)、实现反向代理

修改nginx.conf文件

 vim /usr/local/nginx/conf/nginx.conf

其中 ~ 表示正则匹配,优先级高于/
在这里插入图片描述

修改好后记得重新加载配置文件

 ./nginx -s reload

在没有防火墙的情况下访问成功
在这里插入图片描述
关闭防火墙,再进行测试
直接访问8080端口直接报错
在这里插入图片描述
访问8012端口,访问成功,说明这个命令只是在服务器内部做代理,并没有走公网。

proxy_pass http://127.0.0.1:8080

在这里插入图片描述
访问http://www.giunwr.cn:8012/8080/xxx 内部跳转到 http://www.giunwr.cn:8080/xxx

在这里插入图片描述
访问 http://www.giunwr.cn:8012/8081/xxx 内部跳转到 http://www.giunwr.cn:8081/xxx
在这里插入图片描述

四、nginx配置负载均衡

(一)、预期效果

浏览器输入地址http://www.giunwr.cn:8012/test/a.html,大概平均分配到8080和8081端口的tomcat服务器,实现负载均衡。
默认分配测试是轮询

(二)、前期准备

1、准备2台tomcat服务,一个端口为8080,一个端口为8081
2、2台服务器都需要在webapps目录下创建目录test,并在目录test里面创建a.html

(三)、实现功能

修改nginx配置文件
在http块中修改

upstream myserver {
    
    server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server {
    
    listen       8012;
    server_name  localhost;
    location / {
    
        root   html;
    proxy_pass http://myserver;
        i

在这里插入图片描述
其中upstream在http块里面。myserver为自定义的名称
多访问几次URLhttp://www.giunwr.cn:8012/test/a.html,可以发现几乎是8080的tomcat服务和8081的tomcat服务器之间来回访问

 for ((i=1;i<5;i++));do curl  'http://www.giunwr.cn:8012/test/a.html' ;done

在这里插入图片描述

(四)、负载均衡的分配策略

1、轮询(默认就是这种策略)

按请求时间逐一分配,如果某个服务器挂了,就自动剔除

2、weight(权重)

默认weight值是1,值越大表示权重越大,分配到的几率也就越大
当后端服务器性能不均时候,可以考虑该策略
示例

upstream myserver {
    
    server 127.0.0.1:8080 weight=5;
	server 127.0.0.1:8081 weight=10;
}

3、ip_hash

每个请求按访问ip的hash结果分配,这样子访客固定访问一个后端服务器,可以解决session问题
举个例子:
A用户固定ip,第一次访问到8080tomcat,那么后面就都是访问到这台机器
示例

upstream myserver {
    
    ip_hash;
    server 127.0.0.1:8080;
	server 127.0.0.1:8081;
}

4、fair(第三方)

根据后端响应时间来分配请求,需要时间短的优先分配
示例
示例

upstream myserver {
    
    server 127.0.0.1:8080;
	server 127.0.0.1:8081;
	fair;
}

五、nginx配置动静分离

(一)、预期效果

nginx适合处理静态界面(或者说静态请求),
tomcat适合处理动态界面(或者说动态请求)
动静分离的方式:
1、静态文件一个域名,放在独立的服务器中
2、混合发布,使用nginx分离
通过location指定不同后缀名实现不同的请求和转发。比如expires头部,用于设置过期时间

这边使用第一种方案

(二)、前期准备

准备静态资源
在这里插入图片描述

(三)、配置与实现

配置

location /www/ {
    
    root   /data/;
    index  index.html index.htm;
}
location /txt/ {
    
        root   /data/;
        # 列出当前目录的下的资源
        autoindex  on;
    }

在这里插入图片描述
实现效果
在这里插入图片描述
在这里插入图片描述

六、第三方模块stub_status安装

(一)、安装步骤

1、查看是安装该模块(默认不安装)需要进入nginx目录下的sbin目录

[sbin]# ./nginx -V 2>&1|grep stub_status

如果内容为空,即没有安装
3、查看当前已经安装的模块

./nginx -V

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

4、重新配置参数
在原来的参数基础上加上 with-http_stub_status_module

./configure --prefix=/usr/local/nginx --pid-path=/var/local/nginx/nginx.pid --lock-path=/var/local/nginx/nginx.lock --error-log-path=/var/local/nginx/error.log --http-log-path=/var/local/nginx/access.log --with-http_gzip_static_module --with-http_stub_status_module --http-client-body-temp-path=/var/local/nginx/client --http-proxy-temp-path=/var/local/nginx/proxy --http-fastcgi-temp-path=/var/local/nginx/fastcgi --http-uwsgi-temp-path=/var/local/nginx/uwsgi --http-scgi-temp-path=/var/local/nginx/scgi

在这里插入图片描述
5、做好备份

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

6、重新编译
注意只需要编译即可

make

7、替换掉原来的二进制nginx文件
在nginx安装目录下的objs目录里面

cp /root/wr/nginx-1.20.2/objs/nginx /usr/local/nginx/sbin/

(二)、配置与实现

1、配置简单的监控功能
在server块里面写入下面配置命令

location /nginx_status {
    
        stub_status;
        allow all;
}

在这里插入图片描述
2、重新启动nginx

./nginx -s reload

3、实现效果
访问http://主机地址/nginx_status即可
在这里插入图片描述
参数参考文档
active connections – 活跃的连接数量
server accepts handled requests — 总共处理了xxx个连接 , 成功创建xxx次握手, 总共处理了xxx个请求
reading — 读取客户端的连接数.
writing — 响应数据到客户端的数量
waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.

(三)、遇到的问题

1、无法替换二进制nginx文件
在这里插入图片描述
原因是nginx服务器还在运行,需要停止nginx

./nginx -s stop

2、重新加载nginx报错
nginx: [error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory)
在这里插入图片描述
解决办法,重新指定一下nginx配置文件

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

在这里插入图片描述

七、nginx压缩模块

在http模块里面开启压缩

gzip  on;    #开启压缩响应
gzip_http_version 1.1;  # 只针对http1.1进行压缩
gzip_comp_level 9;      # 压缩等级为9
gzip_types text/plain;  # 压缩类型为文本

其他具体参数可以参考文档
参考文档:https://www.jb51.net/article/146413.htm

八、https配置

1、先判断是否又ssl模块,可参考第六大点
2、这边已安装过ssl模块(–with-http_ssl_module)
修改配置文件,添加server模块接即可,

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_44105778/article/details/123140841

智能推荐

java socket与io流_Java socket中关闭IO流后,发生什么事?(以关闭输出流为例)-程序员宅基地

文章浏览阅读108次。声明:该博文以socket中,关闭输出流为例进行说明。为了方便讲解,我们把DataOutputstream dout = new DataOutputStream(new BufferedOutputStream(mySocket.getOutputStream()));中的dout做为Socket输出流的代言。同样的,din是输入流的代言。可以造成dout被关闭的操作有:1、调用dout.clo..._error:java.net.socketexception: socket output is shutdown

YOLOV4 SPP模块_yolo中使用spp的目的是什么-程序员宅基地

文章浏览阅读4.2k次,点赞2次,收藏8次。SPP模块首要作用是用来解决输入图像尺寸不统一的问题,SPP中不同大小特征的融合,有利于待检测图像中目标大小差异较大的情况,尤其是对于yolov3一般针对的复杂多目标图像。代码实现:_yolo中使用spp的目的是什么

Kafka基础-原理、运维与开发_kafka、zookeeper运维-程序员宅基地

文章浏览阅读1k次。文章目录1.kafka基本原理1.1 消息系统的作用1.2 kafka核心概念1.3 kafka集群架构1.4 kafka高性能高可用原理2.kafka运维实战2.1 kafka生产集群部署方案2.2 kafka常用命2.3 kafka监控-Kafkamanager3.kafka开发实战3.1 kafka生产者3.1.1 生产者发消息原理3.1.2 生产者demo代码3.1.3 生产者核心参数3.2 kafka消费者3.2.1 消费者消费几个重要概念3.2.2 消费者demo代码3.2.3 消费者重要参数_kafka、zookeeper运维

Yii2.0框架学习笔记_yii后台 记录哪张表哪条数据-程序员宅基地

文章浏览阅读432次。1、Yii框架工作流程(MVC文件后缀都是php):models文件夹下建模型,写AR类、对应数据库相关表、定义属性标签、写验证规则、保存表之前调用的方式,用于保存非表单获取的默认数据(如添加数据的时间等,此步如不需要可省略)->controllers文件夹下建控制器、写保存表单的动作->views文件夹下建模板,动态显示视图。2、YII中各种类模型中添加:use yii\ba..._yii后台 记录哪张表哪条数据

NLP实战之BERTopic主题分析-程序员宅基地

文章浏览阅读9.3k次,点赞26次,收藏140次。BERTopic是一种结合了预训练模型BERT和主题建模的强大工具。它允许我们将大规模文本数据集中的文档映射到主题空间,并自动识别潜在的主题。它背后的核心思想是通过BERT模型来捕获文档的语义信息,并然后使用主题建模技术来对这些语义信息进行聚类,从而得出主题。对于大部分小伙伴而言,知道如何去使用BERTopic模型进行主题分析就足够了。所以BERTopic原理就不做过多解释了,感兴趣的小伙伴可以自己去了解一下。BERTopic是一种强大的主题分析工具,它能够自动识别文本数据中的主题,而无需预先定义主题数。_bertopic

idea运行tomcat过程中 中文变����_tomcat 运行-程序员宅基地

文章浏览阅读2.6k次。**需要配置一下tomcat编码**-Dfile.encoding=UTF-8_tomcat 运行

随便推点

外观模式实例-智能手机一键备份_某软件公司为新开发的智能手机控制与管理软件提供了一键备份功能,通过该功能可以-程序员宅基地

文章浏览阅读2.2k次,点赞7次,收藏40次。外观模式实例问题描述结构图编程实现需要交互的类Facade类客户端问题描述某软件公司为新开发的智能手机控制与管理软件提供一键备份功能,通过该功能可以将原本存储在手机中的通讯录、短信、照片、音乐等资料一次性拷贝到移动存储介质中(例如:SD卡)中。在实现过程中需要与多个已有的类进行交互,如通讯录管理类、短信管理类。结构图编程实现需要交互的类public class ContactsManager { private String contacts; public Contacts_某软件公司为新开发的智能手机控制与管理软件提供了一键备份功能,通过该功能可以

走出MFC子类化的迷宫_vs怎么用mfc画出迷宫-程序员宅基地

文章浏览阅读1k次。本文转自:http://www.99inf.net/SoftwareDev/VC/22322.htmWindows给我们或是说给它自己定义了许多丰富的通用控件,如:Edit、ComboBox 、ListBox……等,这些控件功能丰富,能为我们开发工作带来极大方面,试想:我们单单是自己实现一个EDIT控件是多么的艰难!但是,在实际开发中还是有些情况这些标准控件也无能为力,比如:在我们的应用中要求_vs怎么用mfc画出迷宫

【矩阵学习】Jacobian矩阵和Hessian矩阵_海森矩阵判断是否为驻点-程序员宅基地

文章浏览阅读6.4k次,点赞5次,收藏42次。【矩阵学习】Jacobian矩阵和Hessian矩阵Jacobian 矩阵Jacobian 行列式功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchar..._海森矩阵判断是否为驻点

回顾HTTP协议和报文_协议报文和数据报文的区别-程序员宅基地

文章浏览阅读487次。计算机网络这门课是在大二上的时候是作为主修课,当然上这门课的时候有点划水了。后来接触到校招这方面,下定决心恶补计算机网络这方面的知识,就买了一本《计算机网络:自顶向下的方法》研习。如果不想读谢希仁那版书(毕竟晦涩难懂),又想比较系统的了解计算机网络这方面知识,这本书真的非常推荐。划重点:简单回顾一下HTTP及其报文。1、什么是HTTP协议?HTTP 超文本传输协议 (HTTP-Hypertext transfer protocol),是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用_协议报文和数据报文的区别

Flash / Flex Tutorial - How to Create a crossdomain.xml file-程序员宅基地

文章浏览阅读535次。Flash / Flex Tutorial - How to Create a crossdomain.xml file.This brief tutorial will teach you how to create a crossdomain.xml file so that you can access files and information from outside domains

Redis Sentinel机制与用法[转]_sentinel: redis://10.43.19.251:26379 频繁 added down-程序员宅基地

文章浏览阅读1.3k次。Redis Sentinel 机制与用法(一)概述Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自动_sentinel: redis://10.43.19.251:26379 频繁 added down

推荐文章

热门文章

相关标签