文章目录

  • 一.前言
    • ①什么是Nginx?
    • ②服务中为什么要使用Nginx原因?
  • 二.安装Nginx
    • 1.介绍
    • 2.安装
      • ①在Linux系统安装nginx
      • ②上传并解压到/usr/local/目录下
      • ③安装环境并启动
  • 三、Nginx虚拟主机端口与域名映射
    • 虚拟主机端口映射
      • 如何同时启动这两个项目?
      • 效果图
    • 虚拟主机域名映射
      • 修改 C:\Windows\System32\drivers\etc 目录中的 hosts
      • 效果图
  • 四、Nginx反向代理与负载均衡
    • 1. 正向代理:
    • 2. 反向代理:
    • 3. 总结:
    • 配置反向代理
    • 效果图
    • 配置反向代理与负载均衡:(复制 3 个 tomcat,分别配置不同的端口号!)
    • 效果图
    • nginx.conf文件配置内容

一.前言

①什么是Nginx?

Nginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯
的程序设计师伊戈尔·西索夫(Igor Sysoev)所开发,官方测试 nginx 能够支支撑 5 万并发链接,并且
cpu、内存等资源消耗却非常低,运行非常稳定。
Nginx 应用场景:
1、http 服务器。Nginx 是一个 http 服务可以独立提供 http 服务。可以做网页静态服务器。
2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要
用多台服务器集群可以使用 nginx 做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务
器负载高宕机而某台服务器闲置的情况。

②服务中为什么要使用Nginx原因?


Α•在传统的Web项目中,并发量小,用户使用的少。所以在低并发的情况下,用户可以直接访问tomcat服务器,然后tomcat服务器返回消息给用户。比如,我们上传图片:
Β•为了解决并发高、用户多,可以使用负载均衡:也就是我们多增加几个tomcat服务器。当用户访问的时候,请求可以提交到空闲的tomcat服务器上。
但可能会出现一种情况,上传图片操作。我们把图片上传到了tomcat1上了,当我们要访问这个图片的时候,tomcat1正好在工作,所以访问的请求就交给其他的tomcat操作,而tomcat之间的数据没有进行同步,所以就发生了我们要请求的图片找不到。
C•于是为了解决这种情况,我们就想出了分布式。我们专门建立一个图片服务器,用来存储图片。这样当我们都把图片上传的时候,不管是哪个服务器接收到图片,都把图片上传到图片服务器。
图片服务器上需要安装一个http服务器,可以使用tomcat、apache、nginx。

当然我们也有疑问,为什么不使用tomcat,而使用nginx?

nginx常用做静态内容服务和代理服务器(不是你FQ那个代理),直面外来请求转发给后面的应用服务(tomcat,django什么的),tomcat更多用来做做一个应用容器,让java web app跑在里面的东西,对应同级别的有jboss,jetty等东西。
但是事无绝对,nginx也可以通过模块开发来提供应用功能,tomcat也可以直接提供http服务,通常用在内网和不需要流控等小型服务的场景。
apache用的越来越少了,大体上和nginx功能重合的更多。
严格的来说,Apache/Nginx 应该叫做「HTTP Server」;而 Tomcat 则是一个「Application Server」,或者更准确的来说,是一个「Servlet/JSP」应用的容器(Ruby/Python 等其他语言开发的应用也无法直接运行在 Tomcat 上)。
一个 HTTP Server 关心的是 HTTP 协议层面的传输和访问控制,所以在 Apache/Nginx 上你可以看到代理、负载均衡等功能。客户端通过 HTTP Server 访问服务器上存储的资源(HTML 文件、图片文件等等)。通过 CGI 技术,也可以将处理过的内容通过 HTTP Server 分发,但是一个 HTTP Server 始终只是把服务器上的文件如实的通过 HTTP 协议传输给客户端。
而应用服务器,则是一个应用执行的容器。它首先需要支持开发语言的 Runtime(对于 Tomcat 来说,就是 Java),保证应用能够在应用服务器上正常运行。其次,需要支持应用相关的规范,例如类库、安全方面的特性。对于 Tomcat 来说,就是需要提供 JSP/Sevlet 运行需要的标准类库、Interface 等。为了方便,应用服务器往往也会集成 HTTP Server 的功能,但是不如专业的 HTTP Server 那么强大,所以应用服务器往往是运行在 HTTP Server 的背后,执行应用,将动态的内容转化为静态的内容之后,通过 HTTP Server 分发到客户端。
一句话来说,就是nginx大众化,更加好用。

二.安装Nginx

1.介绍

本章以Linux系统安装nginx为主来讲解,当然也可以Windows下安装Nginx进行安装测试应用。
没有安装Linux的,请点击安装虚拟机安装详细教程进行了解。

2.安装

①在Linux系统安装nginx

下载安装包nginx:官网:http://nginx.org/ ,然后点击“download”

在下载界面选择自己想要下载的版本,点击对应版本,下载Nginx。

②上传并解压到/usr/local/目录下

虚拟机操作有点不方便,我通过MobaXterm进行连接来操作。

也可以直接使用命令

wget http://nginx.org/download/nginx-1.22.1.tar.gz
tar -zxvf nginx-1.22.1.tar.gz        ---解压nginx安装包

③安装环境并启动

⑴需要安装依赖包

yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

⑵进入nginx-1.22.1目录,使用configure命令创建一 makeFile文件

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

(可以复制粘贴!注意格式!!!)
⑶编译 — 用来编译( 从Makefile中读取指令,然后编译)

make

⑷安装— 用来安装( 从Makefile中读取指令,安装到指定的位置)

make install

⑸新建目录:

mkdir /var/temp/nginx/client -p

⑹编辑启动端口(图片的端口是经过修改的,默认是80端口)
—i进行编辑, 编辑好之后,按esc退出编辑模式,然后 :wq 进行保存退出

cd /usr/local/nginx/confvim nginx.conf

注意:需要查看是否开放此端口,若无,此处需要关闭防火请,放开端口权限,再重新启动防火墙

放开权限:编辑文件iptables

⑺启动nginx

cd /usr/local/nginx/sbin
./nginx查看是否启动成功命令:ps -ef | grep nginx注意:如果你是在阿里云服务器部署(有的人在自己的vmwar虚拟机里面部署),
那么就要登陆阿里云服务器,上防火墙一列开放你的nginx启动端口,否则访问不了!!!

然后通过 ip:端口,就能看到是否启动成功。

⑻Nginx其他命令
关闭nginx

./nginx -s stop
--- 或者
./nginx -s quit

重启nginx

./nginx -s reload

⑼简单的vue项目部署-打包后的vue项目,然后上传到目录:/usr/local/nginx/html

三、Nginx虚拟主机端口与域名映射

虚拟主机端口映射

需要在路径:/usr/local/nginx ,新建一个文件夹自定义webnginx(与html同级),放入打包后的vue项目

如何同时启动这两个项目?

停止./nginx -s stop,修改nginx.conf文件配置,然后重新启动./nginx 即可

效果图

8089端口

8088端口

虚拟主机域名映射

修改 C:\Windows\System32\drivers\etc 目录中的 hosts


效果图


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

1. 正向代理:

正向代理类似一个跳板机,代理访问外部资源
比如我们国内访问谷歌,直接访问访问不到,我们可以通过一个正向代理服务器,请求发到代理服,代理服务器能够访问谷歌,这样由代理去谷歌取到返回数据,再返回给我们,这样我们就能访问谷歌了
正向代理的用途:
(1)访问原来无法访问的资源,如google
(2) 可以做缓存,加速访问资源
(3)对客户端访问授权,上网进行认证
(4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息

2. 反向代理:

反向代理(Reverse Proxy)实际运行方式是指以代理服务器(proxy)来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器
反向代理的作用:
(1)保证内网的安全,阻止web攻击,大型网站,通常将反向代理作为公网访问地址,Web服务器是内网(中国大陆使用 nginx 网站用户有:百度、京东、新浪、网易、腾讯、 淘宝等)
(2)负载均衡,通过反向代理服务器来优化网站的负载

3. 总结:

正向代理即是客户端(client)代理, 代理客户端, 服务端不知道实际发起请求的客户端。(VPN访问谷歌)
反向代理即是服务端(server)代理, 代理服务端, 客户端不知道实际提供服务的服务端。(美团外卖就相当于反向代理服务端,)

配置反向代理

1、需要添加个新地址 www.yuan.com ; 修改 C:\Windows\System32\drivers\etc 目录中的 hosts
2、tomcat部署启动 参考链接 11.Linux 环境中安装并配置 Tomcat
3、停止./nginx -s stop,修改nginx.conf文件配置,然后重新启动./nginx 即可

效果图


配置反向代理与负载均衡:(复制 3 个 tomcat,分别配置不同的端口号!)

1、使用命令复制两个tomcat

cp -r apache-tomcat-7.0.52 tomcat2

2、需要修改 路径下/usr/local/tomcat2/conf/ 和/usr/local/tomcat3/conf/ 下的server.xml的端口号
例如:tomcat2 修改为8580、tomcat3修改为8680

3、部署一下html,路径下/usr/local/tomcat2:3/webapps/ROOT/ 的index.html,例如:

<h1>nginx-tomcat3-8680!!!</h1>

4、分别启动tomcat2、tomcat3;启动 Tomcat: 进入 tomcat 的 bin 下启动:./startup.sh 进入 tomcat 的
bin 下关闭:./shutdown.sh 使用 tail 命令查看日志。
5、停止./nginx -s stop,修改nginx.conf文件配置,然后重新启动./nginx 即可

注意:端口号一定要开放,命令

--- 进入跟目录
cd /
--- 关闭防火墙
/etc/init.d/iptables stop
--- 添加端口号
vi /etc/sysconfig/iptables
--- 重启防火墙
/etc/init.d/iptables restart
--- 查看端口列表
service iptables start
service iptables status

效果图


nginx.conf文件配置内容

#user  nobody;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}http {include       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  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;#虚拟主机域名映射server {listen       8089;server_name  hn.xiaocao.com;location / {root   html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}#虚拟主机域名映射server {listen       8088;server_name  hn.yuan.com;location / {root   webnginx;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}#配置反向代理upstream tomcat-proxy {#配置负载均衡server  192.168.148.128:8080;server  192.168.148.128:8580;server  192.168.148.128:8680;}server {listen 8899;server_name www.yuan.com;location / {proxy_pass http://tomcat-proxy;index index.html;}}}

各位看官》创作不易,点个赞!!!
诸君共勉:万事开头难,只愿肯放弃。

免责声明:本文章仅用于学习参考

带你了解什么是Nginx(实操反向代理-负载均衡)相关推荐

  1. Nginx特性验证-反向代理/负载均衡/页面缓存/URL重定向

    原文发表于cu:2016-08-25 参考文档: Nginx 反向代理.负载均衡.页面缓存.URL重写等:http://freeloda.blog.51cto.com/2033581/1288553 ...

  2. 编译安装nginx并实现反向代理负载均衡和缓存功能

    一.编译安装nginx 1.下载 [root@ns1 ~]# wget http://nginx.org/download/nginx-1.10.0.tar.gz 2.解压 [root@ns1 ~]# ...

  3. Nginx反向代理负载均衡虚拟主机动静分离UrlRewrite防盗链

    文章目录 1. Nginx简介 1.1 Nginx背景 1.2 Nginx的优点 1.3 Nginx的功能特性及常用功能 2.Nginx安装 2.1 下载上传解压 1.2 安装 3.nginx核心概念 ...

  4. Nginx总结(安装,使用,正向代理,反向代理,负载均衡)

    目录 Nginx介绍与安装 一.Nginx简介 1.什么是ngnix 2.nginx应用场景 二.Nginx安装与启动 Nginx静态网站部署 一.静态⽹站的部署 二.配置虚拟主机 1.端⼝绑定 2. ...

  5. Nginx反向代理 负载均衡sky

    Nginx服务部署 Nginx简介 Nginx (engine x) 是一个轻量级的.高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由伊戈尔·赛索耶夫为俄罗 ...

  6. Nginx 反向代理 负载均衡 虚拟主机

    Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常 ...

  7. nginx 反向代理负载均衡 tomcat集群应用

    nginx 反向代理负载均衡 tomcat集群应用 环境介绍: 系统:centos5.8_64 192.168.0.201:nginx服务器 192.168.0.202:tomcat服务器 192.1 ...

  8. Nginx(二) 反向代理负载均衡

    1.反向代理 当我们请求一个网站时,nginx会决定由哪台服务器提供服务,就是反向代理. nginx只做请求的转发,后台有多个tomcat服务器提供服务,nginx的功能就是把请求转发给后面的服务器, ...

  9. Nginx 反向代理 负载均衡 动静分离 高可用 原理

    1.Nginx简介 1.1 概述 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理服务器,特点是占有内存少,并发能力强,能经受高负载的考验,有报告表明能 ...

最新文章

  1. c++图形中如何判断鼠标点击在一条直线上_PS教程:十种抠图方法【上】
  2. java 获取活动窗口_用Java获取活动窗口信息
  3. 简述一下你对mysql事物的理解_面试题:说说你对数据库事务的理解
  4. 老人机彻底不能用了?联通逐渐关闭2G、3G网络?回应:手机制式不支持
  5. 开发大型高负载类网站应用的几个要点
  6. 英文单词 modal 模态,flex里取模糊之意
  7. 类818tu.c微信小说分销系统设计之定时模板消息源码
  8. 收藏!示波器探头的选择与使用
  9. 2G GSM基站的工作原理
  10. python怎么输入一个数-Python中实现输入一个整数的案例
  11. 个人职场工作感悟总结「如何尽快地提升自我」
  12. java 分词获取词性_jie分词之分词、词性分析、关键词抽取
  13. ipad显示portal服务器获取不,苹果portal认证失败原因合集
  14. 通过贝叶斯非参数模型探索在物流风险评估中的大数据
  15. 【POI 2006】 Tet-Tetris-3D
  16. 汇编语言的七种寻址方式
  17. 如何让alias永久生效?
  18. 智能车辆路径跟踪滑膜控制+单点预瞄
  19. 获取Android签名打包keystore或者.jks文件的MD5
  20. shader 光照贴图

热门文章

  1. Android LCD整理二:mtk平台LCD流程分析(LK部分)
  2. Oracle和Mysql的区别
  3. linux系统设置开机启动,linux下设置自己的程序开机自启动
  4. 天嵌E9开发板tftp烧录eMMC教程(Android)
  5. 西部学刊杂志西部学刊杂志社西部学刊编辑部2022年第22期目录
  6. 基于51单片机的电子密码指纹锁无线WiFi通信原理图PCB
  7. 猿人学试题(非常简单js混淆、雪碧图、样式干扰 css加密、js混淆源码乱码、js混淆动态cookie、访问逻辑)
  8. 华为免费培养2000名大数据开发者!
  9. 看片会员php源码,会员碎片 · THINKPHP插件 · 看云
  10. Eatting外卖基于瑞吉外卖代码全功能优化含源码