社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  NGINX

Nginx 快速入门

黑客技术和网络安全 • 3 年前 • 331 次点击  
👇👇关注后回复 “进群” ,拉你进程序员交流群👇👇

一、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的快速入门教学,感谢各位阅览!

来源:https://blog.csdn.net/weixin_51130354

-End-

最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!

点击👆卡片,关注后回复【面试题】即可获取

在看点这里好文分享给更多人↓↓

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/134122
 
331 次点击