Nginx 部署、反向代理配置、负载均衡

最近我们的angular项目部署,我们采用的的是Nginx,下面对Nginx做一个简单的介绍。

为什么选择Nginx

  • 轻:相比于Apache,同样的web服务器占用的资源少
  • 多线程模式:Nginx拥有多个worker进程,处理请求时是异步非阻塞的
  • 社区活跃
  • 可以做反向代理
  • 支持7层负载均衡。什么是七层负载均衡
  • 配置简单,易上手。这才是我们选择的主要原因。

上一个官方下载下来的文档

链接:https://pan.baidu.com/s/1bkbGk8bcZcqe6sVG843WHA
提取码:eg59

Window下 的 Nginx

虽然一般的服务器都不使用windows系统,我们还是先来一段window的

  • 访问 ngix下载页下载windows 版本的 ngix压缩包
  • 解压到相应的目录下。
  • 打开CMD, cd到解压ngix的目录下,键入 start nginx.exe
  • 打开浏览器,输入localhost/127.0.0.1
  • 上图:

  • 常用命令:
nginx -s stop                  #停止nginx
nginx -s reload                #重新加载nginx配置
nginx -s reopen                #重新启动
nginx -s quit                  #退出nginx

Linux(CentOS) 下的 Nginx

下面是我们真正使用的Linux 下 搭建Nginx,演示时我使用的WM Ware创建的虚拟机。使用putty进行远程连接。注:如果使用服务器操作的话,粘贴可就麻烦了,所以还是用远程连接吧,能直接copy paste命令

菜鸟教程的方法

直接上链接。Nginx安装

官方文档上的方法

  • cd 到 yum的资源目录下
 cd  /etc/yum.repos.d/
  • 创建一个文件:nginx.repo,
vi nginx.repo
# 内容
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1
# 文档上的url是http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/
# 替换成你的 os 与 版本
# 保存退出
  • 键入如下一系列命令
yum -y install nginx    # 安装
systemctl enable nginx  #开机自启
systemctl start nginx   #启动nginx
firewall-cmd --permanent --zone=public --add-port=80/tcp #永久开启80端口
firewall-cmd --reload   #重新加载防火墙
  • 下面我们回到物理机,测试一下虚拟机上的Nginx 服务是否安装成功。在物理机打开浏览器,键入:虚拟机IP:80,上图:

  • 常用命令与Windows相同。
  • 个人建议使用官方上的配置。

说明Angular 项目的打包,并部署到虚拟机的Nginx

  • 在本地找了一个angular项目目录下 ng-build,会生一个dist文件夹
  • 键入如下命令:nginx -t
nginx -t #查看配置文件路径
#结果
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
#查看上述路径的文件
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;
}
  • 注意上面最后一句话包含conf.d文件夹下的所有.conf。我们再那个文件夹下找到了default.conf ,编辑default.conf
server {listen       80;server_name  localhost;location / {#root   /usr/share/nginx/html;root   /usr/share/nginx/html/dist/demo;#更改成我们上传的目录一定要写到有index.html那一级index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}
}
  • 重新载入Nginx配置
nginx -s reload
  • 上对比图

配置一个简单的反向代理

前端需要调用后端的Rest API,我们需要将一部分请求配置反向代理。

  • 直接上conf配置
server {listen       80;server_name  localhost;location / {root   /usr/share/nginx/html/dist/demo;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}# 匹配到/proxy/这个url的时候代理到220.181.112.244 百度这个服务器location ^~ /proxy/ {proxy_set_header Host 220.181.112.244;proxy_set_header X-Real-IP  220.181.112.244;proxy_pass http://220.181.112.244/proxy/;proxy_http_version 1.1;proxy_set_header Connection "";}
}
  • 在重新载入配置前,我们先尝试一下,上图:

注:本地项目,没有配置路由,所有会没有proxy这个东西,会报404错误,我们可以通过查看当前404是哪个服务器包的错,来判断是否发生反向代理

从图中可以看出,此时没有进行反向代理,在虚拟机的服务器上提示404

注:这里说明一点,就是即便发生了法相贷,但是network中的显示还是我的虚拟机的ip,所以不能当做是否发生反向代理的标注

  • 重新载入Nginx配置
nginx -s reload
  • 刷新刚才的页面,上图:可以发现,已经代理到百度的错误页面上去了。

  • 一个简单的反向代理就配置好了。

    nginx 负载均衡

注:20190220更新

  • 准备工作
1.一台虚拟机
2.虚拟机安装docker
  • 如上面操作在虚拟机上搭载一个Nginx服务器
  • 使用docker 拉取nginx 镜像
docker pull nginx
  • 运行两个nginx的容器
docker run --name nginx-test-1 -d -p 8888:80 nginx /bin/bash
docker run --name nginx-test-2 -d -p 8889:80 nginx /bin/bash
  • 分别进入到两个容器中,更改其中nginx web目下的index.html
docker exec -it nginx-test-1 /bin/bash
内容改成 this is nginx1
docker exec -it nginx-test-2 /bin/bash
内容改成 this is nginx2
  • 退回到虚拟机中,更改虚拟机的nginx conf文件
server{location / {root   /usr/share/nginx/html;index  index.html index.htm;proxy_pass http://balance;  #balance 是下面upstream后定义的名字}
}
# 在server{}外面增加如下代码
upstream balance { server localhost:8888 weight=1; server localhost:8889 weight=1;
}
  • 在本机访问localhost
curl localhost
#
会发现this is nginx1 、 this is nginx2交替出现

转载于:https://www.cnblogs.com/primadonna/p/10101405.html

Nginx 部署、反向代理配置、负载均衡相关推荐

  1. Nginx之反向代理与负载均衡实现动静分离实战

    Nginx之反向代理与负载均衡实现动静分离实战 什么是反向代理与负载均衡 Nginx仅仅作为Nginx  proxy反向代理使用的,因为这个反向代理功能表现的效果是负载均衡集群的效果. 负载均衡指的是 ...

  2. nginx的反向代理及负载均衡

    查看内核版本号: uname  -r 查看Linux发行版本 :cat /etc/issue 或cat /etc/release 查看bash 版本 : bash  --version <?xm ...

  3. nginx的反向代理以及负载均衡模块的使用

    内容: 1.何为代理 2.nginx的反向代理模块以及使用 3.nginx的负载均衡模块以及使用 一.何为代理 代理,由字面意思可以理解为代为服务的是意思. 代理服务技术是一门很古老的技术,是在互联网 ...

  4. nginx(三)反向代理和负载均衡

    nginx(三)反向代理和负载均衡 正向代理概念:比如在学校要上网,在学校内网是一个内网ip,需要连上公网就需要一个正向代理服务器. 反向代理概念: 看下图(Nginx只做请求的转发,后台有多个htt ...

  5. 【网络编程】多个服务器的情况:nginx实现反向代理、nginx基于反向代理实现负载均衡

    如果我们有多个服务器,比如我们只有一个域名:我们可以利用其中一台服务器,通过nginx为这一个域名实现反向代理:进一步,我们可以利用这多台服务器,为这一个域名基于nginx的反向代理实现负载均衡. 文 ...

  6. Nginx做反向代理和负载均衡时“X-Forwarded-For”信息头的处理

    转载自:https://blog.51cto.com/wjw7702/1150225 一.概述 如今利用nginx做反向代理和负载均衡的实例已经很多了,针对不同的应用场合,还有很多需要注意的地方,本文 ...

  7. Nginx 概述 如何正规安装 静态网页配置 反向代理配置 负载均衡配置

    目录 1. 基本概念 1.1 Nginx初步认识 1.2 正向/反向代理 1.3 域名和IP 2. Nginx安装和配置 2.1 安装Nginx 2.2 配置 3. Nginx的使用 3.1 部署静态 ...

  8. Nginx的反向代理与负载均衡--配置Nginx

    前言 Nginx 是一个非常轻量级的服务器,他虽轻但是他最大的优点就是可以承载大量的并发,所以说一般的话很少有用 Node 直接去做服务器让用户去访问的,因为 Node 本身就需要做非 常非常多的事情 ...

  9. Nginx-从零开始使用nginx实现反向代理及负载均衡

    文章目录 环境说明 安装Nginx 安装必须的依赖库 3个 源码安装 yum安装 安装nginx 启动Nginx 常用操作命令 使用非root用户启动nginx 搭建应用 Nginx 做反向代理 + ...

  10. nginx实现反向代理及负载均衡

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013144287/article/details/78551398 一.反向代理 1.什么是反向代 ...

最新文章

  1. C语言指针调用函数_只愿与一人十指紧扣_新浪博客
  2. 北京 10 年,难说再见!
  3. Boost.Signals2 的初学者你好世界示例
  4. 【深度学习】——pytorch搭建模型及相关模型
  5. verilog换行太长代码_Verilog 之 File I/O task and function
  6. GPCC安装以及踩坑经历
  7. explorer.exe应用程序错误,该内存不能为READ
  8. OpenGL超级宝典 纹理(一)
  9. java 实现 excel 函数_Excel函数在Java中的实现 Finv
  10. 台式计算机如何双屏显示,电脑怎么分屏?|台式电脑双显示器连接方法
  11. 【阿里云产品使用教程】1. 阿里云VPC ECS SLB NAT初体验 - 上
  12. peoplesoft查询
  13. JavaFx教程-01初识javaFX
  14. 苹果手机内屏幕出现彩色条纹怎么办
  15. 量子计算机多可怕,量子力学有多可怕?
  16. linux怎么下载安装软件
  17. 计算机系统软件--操作系统
  18. Windows下使用Darknet训练自己的数据集(模型:yolov4-tiny、数据集:垃圾分类)
  19. 狂神学习系列11:SpringBoot
  20. ThinkPHP5数据库操作

热门文章

  1. Linux C语言 pthread_cond_wait()、pthread_cond_timedwait()函数(不允许cond被唤醒时产生竞争,所以需要和互斥锁搭配)
  2. Golang sync.Cond详细理解
  3. windows2003中了一键还原7.9的招了
  4. 职高c语言,C语言职高班教学计划
  5. iOS设备唯一标识符探讨
  6. 下载keep运动软件_keep运动下载安装
  7. C#时间格式化显示AM/PM
  8. 超融合服务器硬盘4T 6T 8T从性能上到底有什么区别
  9. Android API统计
  10. Bag of Tricks for Image Classification with Convolutional Neural Networks(卷积神经网络在图像分类中的技巧)