Nginx详细解说

news2024/11/15 23:35:58

1 什么是Nginx

Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。

Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。

其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。

Nginx 是一个安装非常的简单、配置文件非常简洁(还能够支持perl语法)、Bug非常少的服务。Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。

Nginx代码完全用C语言从头写成。官方数据测试表明能够支持高达 50,000 个并发连接数的响应。

2 常见的代理模式

正向代理和反向代理:

 

前面是正向代理,后面是反向代理。

正向VPN: 虚拟专用网

 VPN英文全称:Virtual Private Network(虚拟专用网络)。 翻墙。

正向代理客户端,反向代理服务器。

3 负载均衡

Nginx提供的负载均衡策略有2种:内置策略和扩展策略。

内置策略为轮询,加权轮询,Ip hash。扩展策略,就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。

Ip hash算法,对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。

4 Nginx安装

http://nginx.org/en/download.html下载稳定版本

下载------>解压------>启动。

 

 

 

5 Nginx的核心配置文件 nginx.conf

1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。

5、location块:配置请求的路由,以及各种页面的处理情况。

引用:Nginx 配置详解 | 菜鸟教程

 6 配置文件的常用配置:

引用:https://www.cnblogs.com/fanzhidongyzby/p/5194895.html

1.#Nginx所用用户和组,window下不指定  
2.user  nobody;  
3.  
4.#工作的子进程数量(通常等于CPU数量或者2倍于CPU)  
5.worker_processes  1;  
6.  
7.#错误日志存放路径  
8.#error_log  logs/error.log;  
9.#error_log  logs/error.log  notice;  
10.error_log  logs/error.log  info;  
11.  
12.#指定pid存放文件  
13.pid        logs/nginx.pid;  
14.  
15.  
16.events {  
17.#使用网络IO模型linux建议epoll,FreeBSD建议采用kqueue,window下不指定。  
18.use epoll;  
19.  
20.#允许最大连接数    
21.worker_connections  1024;  
22.}  
23.  
24.  
25.http {  
26.    #mine.types内定义各文件类型映像  
27.    include       mime.types;  
28.  
29.    default_type  application/octet-stream;  
30.      
31.    #定义日志格式  
32.    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  
33.    #                  '$status $body_bytes_sent "$http_referer" '  
34.    #                  '"$http_user_agent" "$http_x_forwarded_for"';  
35.  
36.    #access_log  logs/access.log  main;  
37.  
38.    sendfile        on;  
39.    #tcp_nopush     on;  
40.  
41.    #keepalive_timeout  0;  
42.    keepalive_timeout  65;  
43.  
44.    #gzip  on;  
45.  
46.    #负载均衡集群设置  
47.    upstream tomcats {  
48.        server localhost:8080 weight=1;  
49.        server localhost:9080 weight=1;  
50.          
51.        #根据ip计算将请求分配各那个后端tomcat,许多人误认为可以解决session问题,其实并不能。  
52.        #同一机器在多网情况下,路由切换,ip可能不同 ---测试的时候可以禁止此项,轮转更明显 
53.        ip_hash;  
54.    }     
55.  
56.    server {  
57.        listen       80;  
58.        server_name  localhost;  
59.  
60.        #charset koi8-r;  
61.  
62.        #access_log  logs/host.access.log  main;  
63.  
64.        location / {  
65.            index  index.shtml;  
66.            proxy_pass  http://tomcats;  
67.            proxy_set_header    X-Real-IP   $remote_addr;  
68.            client_max_body_size    100m;  
69.        }  
70.  
71.#配置动静态分离
72.#location ~ \.(jsp)?$ {
73.         #proxy_pass http://tomcats;
         #proxy_set_header Host $host;
         #proxy_set_header X-Real-IP $remote_addr;
         #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         #proxy_connect_timeout       100;
         #proxy_read_timeout          100;
         #proxy_send_timeout          100;
 #}
 #location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
         #  expires 30d;
         #  root  /usr/local/nginx/html;
         #}
74.
75.        #error_page  404              /404.html;  
76.  
77.        # redirect server error pages to the static page /50x.html  
78.        #  
79.        error_page   500 502 503 504  /50x.html;  
80.        location = /50x.html {  
81.            root   html;  
82.        }  
83.  
84.        # proxy the PHP scripts to Apache listening on 127.0.0.1:80  
85.        #  
86.        #location ~ \.php$ {  
87.        #    proxy_pass   http://127.0.0.1;  
88.        #}  
89.  
90.        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000  
91.        #  
92.        #location ~ \.php$ {  
93.        #    root           html;  
94.        #    fastcgi_pass   127.0.0.1:9000;  
95.        #    fastcgi_index  index.php;  
96.        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;  
97.        #    include        fastcgi_params;  
98.        #}  
99.  
100.        # deny access to .htaccess files, if Apache's document root  
101.        # concurs with nginx's one  
102.        #  
103.        #location ~ /\.ht {  
104.        #    deny  all;  
105.        #}  
106.    }  
107.  
108.  
109.    # another virtual host using mix of IP-, name-, and port-based configuration  
110.    #  
111.    #server {  
112.    #    listen       8000;  
113.    #    listen       somename:8080;  
114.    #    server_name  somename  alias  another.alias;  
115.  
116.    #    location / {  
117.    #        root   html;  
118.    #        index  index.html index.htm;  
119.    #    }  
120.    #}  
121.  
122.  
123.    # HTTPS server  
124.    #  
125.    #server {  
126.    #    listen       443;  
127.    #    server_name  localhost;  
128.  
129.    #    ssl                  on;  
130.    #    ssl_certificate      cert.pem;  
131.    #    ssl_certificate_key  cert.key;  
132.  
133.    #    ssl_session_timeout  5m;  
134.  
135.    #    ssl_protocols  SSLv2 SSLv3 TLSv1;  
136.    #    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;  
137.    #    ssl_prefer_server_ciphers   on;  
138.    #    location / {  
139.    #        root   html;  
140.    #        index  index.html index.htm;  
141.    #    }  
142.    #}  
143.  
144.}  

引用:(238条消息) linux+nginx+tomcat集群-简单配置文件_deng-bb的博客-CSDN博客

linux+nginx+tomcat集群-简单配置文件

测试:

nginx+Tomcat的负载均衡配置_nginx配tomcat负载_采蘑菇的院长的博客-CSDN博客

上面链接能用

@RestController

@Slf4j

public class HelloController {

    @GetMapping("/hello")

    public String hello(){

        log.debug("我是"+ ServiceConfig.serverPort);

        return "好好学习"+ServiceConfig.serverPort;

    }

}



@Configuration

public class ServiceConfig implements ApplicationListener<WebServerInitializedEvent> {

    @Override

    public void onApplicationEvent(WebServerInitializedEvent event) {

        // 项目启动获取启动的端口号

        ServiceConfig.serverPort = event.getWebServer().getPort();

    }

    /**

     * 当前服务使用的端口号

     */

    public static int serverPort;

}

引用:

https://www.cnblogs.com/jiangwangxiang/p/8481661.html

启动2个Tomcat

https://blog.csdn.net/rosejeck/article/details/86149981

 

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

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

相关文章

科技云报道:大模型的中场战事,深入垂直行业腹地

科技云报道原创。 自从OpenAI于2022年11月推出ChatGPT后&#xff0c;一场波及全球科技界的“AI海啸”就此爆发。 自今年以来&#xff0c;国内已有超过30家企业入局大模型赛道。从百度“文心一言”、阿里“通义千问”的发布&#xff0c;到网易“玉言”、科大讯飞“星火”、昆仑…

Centos7匹配Locust+prometheus+grafana性能监控平台

一、安装Loust 之前已写过&#xff0c;这里忽略一万字。。。 Locust初次体验【解决webUI没数据】_Vikesgao的博客-CSDN博客 二、安装prometheus Prometheus 是一个开源的服务监控系统和时序数据库&#xff0c;其提供了通用的数据模型和快捷数据采集、存储和查询接口。它的核心…

LLM:LLaMA模型和微调的Alpaca模型

待写 LLaMA模型 论文原文:https://arxiv.org/abs/2302.13971v1 预训练数据 模型架构 模型就是用的transformer的decoder,所以在结构上它与GPT是非常类似的,只是有一些细节需要注意一下。 1、RMS Pre-Norm 2、SwiGLU激活函数 3、RoPE旋转位置编码 Alpaca模型 [Stanford …

cuda编程学习——CUDA全局内存性能优化(八)

前言 参考资料&#xff1a; 高升博客 《CUDA C编程权威指南》 以及 CUDA官方文档 CUDA编程&#xff1a;基础与实践 樊哲勇 文章所有代码可在我的GitHub获得&#xff0c;后续会慢慢更新 文章、讲解视频同步更新公众《AI知识物语》&#xff0c;B站&#xff1a;出门吃三碗饭 …

Python3数据分析与挖掘建模(8)检验

1. 假设检验 1.1 概述 假设检验是一种统计推断方法&#xff0c;用于对一个或多个总体参数提出关于其取值的假设&#xff0c;并根据样本数据对这些假设进行检验。假设检验的目的是根据样本数据提供统计上的证据&#xff0c;以便对总体参数的假设进行接受或拒绝。 在假设检验中…

JAVA基础 - 如何使用ClassLoader?

1. CLASSLOADER是什么 ClassLoader&#xff0c;类加载器。用于将CLASS文件动态加载到JVM中去&#xff0c;是所有类加载器的基类(Bootstrap ClassLoader不继承自ClassLoader)&#xff0c;所有继承自抽象的ClassLoader的加载器&#xff0c;都会优先判断是否被父类加载器加载过&a…

C++数据结构:二叉树之二(二叉搜索树)

文章目录 前言一、二叉搜索树的概念二、代码详解1、构建节点2、构建二叉树类3、插入方法4、删除方法5、四种遍历方法6、测试代码 总结 前言 前文已经讲了二叉树概念&#xff0c;并搞出一个数组存储的没写具体实用意义的二叉树&#xff0c;这篇文章将讲解二叉树的另一种存储方式…

限量内测名额释放:微信云开发管理工具新功能

我们一直收到大家关于云数据库管理、快速搭建内部工具等诉求&#xff0c;为了给大家提供更好的开发体验&#xff0c;结合大家的诉求&#xff0c;云开发团队现推出新功能「管理工具」&#xff0c;现已启动内测&#xff0c;诚邀各位开发者参与内测体验。 什么是「管理工具」 管…

当节点内存管理遇上 Kubernetes:自动调度与控制

原理 在现代的容器化环境中&#xff0c;节点资源的管理是一个重要的任务。特别是对于内存资源的管理&#xff0c;它直接影响着容器应用的性能和可用性。在 Kubernetes 中&#xff0c;我们可以利用自动调度和控制的机制来实现对节点内存的有效管理。本文将介绍一种基于 Bash 脚…

EM中等效原理

EM中等效原理 一、基本简介 电磁等效定理对于简化许多问题的解是有用的。此外&#xff0c;它们还提供了对麦克斯韦系统电磁场行为的物理见解。它们与唯一性定理和惠更斯原理密切相关。一个应用是它们在研究来自孔径天线或来自激光腔输出的辐射中的用途。 等效源原理&#xf…

3.2 掌握RDD算子

一、准备工作 &#xff08;一&#xff09;准备文件 1、准备本地系统文件 2、把文件上传到HDFS &#xff08;二&#xff09;启动Spark Shell 1、启动HDFS服务 2、启动Spark服务 3、启动Spark Shell 二、掌握转换算子 &#xff08;一&#xff09;映射算子 - map() …

Sketch在线版免费使用,Windows也能用的Sketch!

Sketch 的最大缺点是它对 Windows/PC 用户不友好。它是一款 Mac 工具&#xff0c;无法在浏览器中运行。此外&#xff0c;使用 Sketch 需要安装其他插件才能获得更多响应式设计工具。然而&#xff0c;现在有了 Sketch 网页版工具即时设计替代即时设计&#xff01; 即时设计几乎…

通达信凹口平量柱选股公式,倍量柱之后调整再上升

凹口平量柱是一组量柱形态&#xff0c;表现为量柱两边高、中间扁平或圆底的形态。如下图所示&#xff0c;左右各有一根高度持平的高量柱&#xff0c;中间夹杂着三五根甚至更多根低量柱。 凹口平量柱选股公式需要结合量柱以及K线&#xff0c;主要考虑以下三点&#xff1a; 1、倍…

git各阶段代码修改回退撤销操作

git push origin master 的含义是将本地当前分支的提交推送到名为 origin 的远程仓库的 master 分支上。 各阶段代码修改回退撤销的操作 case1 git checkout -- . 修改了文件内容但没还有git add 或git commit时撤销当前目录下所有文件的修改 case2 当完成了git add 之后&a…

项目管理:面对未知的挑战时,如何获取和使用信息?

一项实验展示了人们在面对未知的挑战时&#xff0c;对信息的获取和使用的影响。在下面的实验中&#xff0c;三组人被要求步行到十公里外的三个村庄。 第一组人没有任何信息&#xff0c;只跟着向导走。他们在走了短短的两三公里后就开始抱怨和情绪低落&#xff0c;同时感到疲惫…

2022年天府杯全国大学生数学建模竞赛E题地铁线路的运营与规划解题全过程文档及程序

2022年天府杯全国大学生数学建模竞赛 E题 地铁线路的运营与规划 原题再现&#xff1a; 地铁是一种非常绿色快捷的交通出行方式&#xff0c;全国各大城市也都在如火如荼地进行地铁线路建设与规划。但乘坐地铁有时候会感觉特别拥挤&#xff0c;这一时期我们称为高峰期。如何合理…

sqlserver中的merge into语句

merge into语句是用来合并两张表的数据的&#xff0c;比如我们想把一张表的数据批量更新到另外一张表&#xff0c;就可以用merge into语句。具体有哪些业务场景呢&#xff1f; 1.数据同步 2.数据转换 3.基于源表对目标表进行增&#xff0c;删&#xff0c;改的操作。 实践步骤…

JavaScript了解调用带参函数,无参函数的代码

以下为JavaScript了解调用带参函数&#xff0c;无参函数的程序代码和运行截图 目录 前言 一、带参函数 1.1 运行流程及思想 1.2 代码段 1.3 JavaScript语句代码 1.4 运行截图 二、无参函数 2.1 运行流程及思想 2.2 代码段 2.3 JavaScript语句代码 2.4 运行截图 前言…

让代码创造童话,共建快乐世界:六一儿童节特辑

让代码创造童话&#xff0c;共建快乐世界&#xff1a;六一儿童节特辑 六一儿童节即将来临&#xff0c;这是一个属于孩子们的快乐节日。为了让这个节日更加有趣&#xff0c;我们发起了“让代码创造童话&#xff0c;共建快乐世界”六一活动。在这个活动中&#xff0c;我们邀请您…

使用Tensorrt对YOLOv5目标检测的代码进行加速

文章目录 1. 前言2. 官网3. 安装依赖3.1. 安装OpenCV3.1.1. 安装3.1.2. 添加环境变量3.1.3. 查看版本 3.2. 安装TensorRT3.2.1. 下载3.2.2. 安装3.2.3. 添加环境变量 4. 下载项目5. 生成WTS模型6. cmake6.1. 生成Makefile6.1.1. 配置CMakeLists.txt6.1.1.1. 修改编译依赖的路径…