⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 blog.csdn.net/weixin_51130354/article/details/124077330 「小飞.Su」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

一、nginx简介

1、什么是Nginx

Nginx 是⼀款⾼性能的 http 服务器/反向代理服务器及电⼦邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师伊⼽尔·⻄索夫(Igor Sysoev)所开发,官⽅测试 nginx 能够⽀⽀撑 5 万并发链接,并且cpu、内存等资源消耗却⾮常低,运⾏⾮常稳定。

Nginx应⽤场景:

1、http 服务器。 Nginx 是⼀个 http 服务可以独⽴提供 http 服务。可以做⽹⻚静态服务器。

2、虚拟主机。 可以实现在⼀台服务器虚拟出多个⽹站。例如个⼈⽹站使⽤的虚拟主机。

3、反向代理,负载均衡。 当⽹站的访问量达到⼀定程度后,单台服务器不能满⾜⽤户的请求时,需要⽤多台服务器集群可以使⽤ nginx 做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载⾼宕机⽽某台服务器闲置的情况。

二、Nginx安装

1、搜索nginx镜像

docker search nginx

2、拉取nginx镜像

docker pull nginx

3、创建容器,设置端⼝映射、⽬录映射

# 在/root⽬录下创建nginx⽬录⽤于存储nginx数据信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
# 在~/nginx/conf/下创建nginx.conf⽂件,粘贴下⾯内容
vim nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024; }
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
~/nginx/conf.d/80.conf
server {
listen 80; # 监听的端⼝
server_name localhost; # 域名或ip
location / { # 访问路径配置
root /usr/share/nginx/html;# 根⽬录
index index.html index.htm; # 默认⾸⻚
}
error_page 500 502 503 504 /50x.html; # 错误⻚⾯
location = /50x.html {
root html;
}
}
#docker容器创建挂载
docker run -id --name=c_nginx \
-p 80:80 \
-p 81:81 \
-p 82:82 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/conf.d:/etc/nginx/conf.d \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx

1、-p 80:80:将容器的 80端⼝映射到宿主机的 80 端⼝。

2、-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机当前⽬录下的/conf/nginx.conf 挂载到容器的 /etc/nginx/nginx.conf配置⽬录

3、-v $PWD/logs:/var/log/nginx:将主机当前⽬录下的 logs ⽬录挂载到容器的/var/log/nginx⽇志⽬录

三、Nginx静态⽹站部署

1、静态⽹站的部署

/资料/静态⻚⾯/index⽬录下的所有内容 上传到服务器的/usr/local/nginx/html下即可访问

2、 配置虚拟主机

nginx虚拟主机,也叫“⽹站空间”,就是把⼀台运⾏在互联⽹上的物理服务器划分成多个“虚拟”服务器。虚拟主

机技术极⼤的促进了⽹络技术的应⽤和普及。同时虚拟主机的租⽤服务也成了⽹络时代的⼀种新型经济形式。

2.1、端⼝绑定

1)上传静态⽹站:

  • 将/资料/静态⻚⾯/index⽬录上传⾄ /usr/local/nginx/index
  • 将/资料/静态⻚⾯/regist⽬录上传⾄ /usr/local/nginx/regist

2)修改Nginx 的配置⽂件:~/nginx/config.d/port.conf

server {
listen 81; # 监听的端⼝
server_name localhost; # 域名或ip
location / { # 访问路径配置
root /usr/share/nginx/index;# 根⽬录
index index.html index.htm; # 默认⾸⻚
}
error_page 500 502 503 504 /50x.html; # 错误⻚⾯
location = /50x.html {
root html;
}
}
server {
listen 82; # 监听的端⼝
server_name localhost; # 域名或ip
location / { # 访问路径配置
root /usr/share/nginx/regist;# 根⽬录
index regist.html; # 默认⾸⻚
}
error_page 500 502 503 504 /50x.html; # 错误⻚⾯
location = /50x.html {
root html;
}

}

3)访问测试:

地址栏输⼊http://你的虚拟机IP/:81 可以看到⾸⻚⾯
地址栏输⼊http://你的虚拟机IP/:82 可以看到注册⻚⾯

三、Nginx反向代理与负载均衡

1、反向代理

1.1、什么是反向代理

反向代理(Reverse Proxy)⽅式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部⽹络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为⼀个反向代理服务器。

⾸先我们先理解正向代理,如下图:

正向代理是针对你的客户端,⽽反向代理是针对服务器的,如下图:

1.2、配置反向代理准备⼯作

在docker中部署tomcat

1、搜索tomcat镜像

docker search tomcat

2、拉取tomcat镜像

docker pull tomcat

3、创建容器,设置端⼝映射、⽬录映射

# 在/root⽬录下创建tomcat⽬录⽤于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat

参数说明:

-p 8080:8080: 将容器的8080端⼝映射到主机的8080端⼝

-v $PWD:/usr/local/tomcat/webapps: 将主机中当前⽬录挂载到容器的webapps

4、 使⽤外部机器访问tomcat

1.3 配置反向代理

~/nginx/config.d/proxy.conf
upstream tomcat-me{
server 192.168.220.12:8080;
}
server {
listen 80; # 监听的端⼝
server_name www.me.com; # 域名或ip
location / { # 访问路径配置
# root index;# 根⽬录
proxy_pass http://tomcat-me;
index index.html index.htm; # 默认⾸⻚
}
}

重新启动Nginx 然后⽤浏览器测试:http://www.me.com (此域名须配置域名指向)

2、负载均衡

2.1 什么是负载均衡

负载均衡建⽴在现有⽹络结构之上,它提供了⼀种廉价有效透明的⽅法扩展⽹络设备和服务器的带宽、增加吞吐量、加强⽹络数据处理能⼒、提⾼⽹络的灵活性和可⽤性。

负载均衡,英⽂名称为Load Balance,其意思就是分摊到多个操作单元上进⾏执⾏,例如Web服务器、FTP服务器、企业关键应⽤服务器和其它关键任务服务器等,从⽽共同完成⼯作任务。

2.2 配置负载均衡准备⼯作

(1)使⽤docker创建3个tomcat容器,端⼝分别为8080 ,8081,8082 。

docker run -id --name=c_tomcat1 \
-p 8081:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat
docker run -id --name=c_tomcat2 \
-p 8082:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat
docker run -id --name=c_tomcat3 \
-p 8083:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat

(2)分别启动这三个tomcat服务。

(3)为了能够区分是访问哪个服务器的⽹站,可以在⾸⻚标题加上标记以便区分。

2.3 配置负载均衡

修改 Nginx配置⽂件:lb.conf

upstream tomcat-huike {
server 192.168.220.12:8080;
server 192.168.220.12:8081;
server 192.168.220.12:8082;
}
server {
listen 80; # 监听的端⼝
server_name www.huike.com; # 域名或ip
location / { # 访问路径配置
# root index;# 根⽬录
proxy_pass http://tomcat-huike;
index index.html index.htm; # 默认⾸⻚
}
error_page 500 502 503 504 /50x.html; # 错误⻚⾯
location = /50x.html {
root html;
}
}

部署并访问项目,刷新观察每个⽹⻚的标题,看是否不同。

经过测试,三台服务器出现的概率各为33.3333333%,交替显示。

如果其中⼀台服务器性能⽐较好,想让其承担更多的压⼒,可以设置权重。

⽐如想让NO.1出现次数是其它服务器的2倍,则修改配置如下:

upstream tomcat-travel {

server 192.168.177.129:8080;

server 192.168.177.129:8081 weight=2;

server 192.168.177.129:8082;

}

以上则为nginx-docker的快速入门教学,感谢各位阅览!

文章目录
  1. 1. 一、nginx简介
    1. 1.1. 1、什么是Nginx
      1. 1.1.1. Nginx应⽤场景:
  2. 2. 二、Nginx安装
    1. 2.1. 1、搜索nginx镜像
    2. 2.2. 2、拉取nginx镜像
    3. 2.3. 3、创建容器,设置端⼝映射、⽬录映射
  3. 3. 三、Nginx静态⽹站部署
    1. 3.1. 1、静态⽹站的部署
    2. 3.2. 2、 配置虚拟主机
      1. 3.2.1. 2.1、端⼝绑定
  4. 4. 三、Nginx反向代理与负载均衡
    1. 4.1. 1、反向代理
      1. 4.1.1. 1.1、什么是反向代理
      2. 4.1.2. 1.2、配置反向代理准备⼯作
      3. 4.1.3. 1.3 配置反向代理
    2. 4.2. 2、负载均衡
      1. 4.2.1. 2.1 什么是负载均衡
        1. 4.2.1.1. 2.2 配置负载均衡准备⼯作
      2. 4.2.2. 2.3 配置负载均衡