本片博客记录在ubuntu16下安装nginx,以及如何实现负载均衡

安装nginx

  • 如果是新机器,安装相关依赖环境
sudo apt install build-essential
sudo apt install libtool
sudo apt install libpcre3 libpcre3-dev
sudo apt install zlib1g-dev
sudo apt-get install openssl libssl-dev

如果没有依赖环境,编译的时候会报下面的错

make: *** No rule to make target 'build', needed by 'default'.  Stop.

2 下载nginx 到虚拟机

当然我是直接通过filezilla扔给虚拟机的

3 解压,顺道删除压缩包

tar xvf XXXrm -rf XXX

4 进入nginx目录里面,指定安装的目录

指定安装在 /opt/nginx目录下(一般都把自己的软件安装在opt下)

./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx

5 编译安装

make && make install

6 启动

 nginx

ok ,现在可以去访问虚拟机的80端口,成功看到nginx的 欢迎页

7 停止

nginx -s stop

nginx号称7x24小时不停止,所以当我们修改配置文件之后,重新加载nginx,执行下面的脚本就好了

nginx -s reload

反向代理

1. 什么是正向代理?:

先说一下啥是正向代理,其实我们用的vpn本质上就是正向代理,因为一堵墙围着我们国家,所以我们通过浏览器访问国外的谷歌时请求被强了,根本出不去,那么我们怎么请求呢?vpn出现了,他就是一种正向代理,我们把我们的请求发送给vpn所在的服务器,比如它在香港,让他帮我们转发给谷歌,谷歌接收到请求后把数据回显给vpn,vpn发送给我们,这其实就是一个正向代理的过程

  • 正向代理特点: 代理服务器起到一个转发请求的作用,但是从一开始它就很明确的知道自己要去访问哪台服务器

2. 什么是反向代理?

  • 同样它的工作也是负责转发;来自客户端的请求,但是当客户端的请求发过来之后,一开始它是不清楚往哪里转发的,他需要根据配置去解析,然后再定位,转发

3. 为什么要使用反向代理?

现在流行的微服务架构,拥有相同功能的服务,通常需要做成集群,那么问题来了,我们的浏览器默认是80端口,多个功能相同的应用分别占用多个不同的端口,那谁来占用80呢?nginx通过反向代理优秀的解决了这个问题
{% asset_img 1.jpg my first image %}

4. nginx如何实现反向代理

通过配置实现

nginx的主配置文件名叫

nginx.config
它在nginx的安装目录下的config目录下面


#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块主要有三个作用域, http  server  location
http {  #可以嵌套多个server ,配置代理,缓存,日志,等绝大多数功能,和第三方模块配置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;# 开启高效文件传输模式,这个指令,指定了nginx是否调用sendfile函数传输文件,对于普通的应用设为on ,如果用来进行下载等IO重负载应用可设为offsendfile        on;#tcp_nopush     on;  #防止网络阻塞#keepalive_timeout  0;keepalive_timeout  65;  # 长连接超时时常,单位秒#gzip  on;# 负载均衡
#    upstream XXX.com{
#   upstream负载均衡块,  weight表示权重, 值越大,被分配到的几率就越大
#    server 192.168.80.121:80 weight=3;
#    server 192.168.80.121:80 weight=3;
#    server 192.168.80.121:80 weight=3;
#}#server配置虚拟主机的相关参数server {  listen       80; # 监听端口server_name  localhost; # 监听地址,可以采用域名加多个空格隔开,如果匹配不到我们在浏览器输入的域名.默认走 localhost, 然后location到nginx的欢迎页#charset koi8-r;# 本虚拟机的访问日志 #access_log  logs/host.access.log  main;# location 配置请求的路由,和各种页面的处理情况location / {root   html;index  index.html index.htm;  # 默认页面}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;#        index  index.html index.htm;#    }#}# HTTPS server##server {#    listen       443 ssl;#    server_name  localhost;#    ssl_certificate      cert.pem;#    ssl_certificate_key  cert.key;#    ssl_session_cache    shared:SSL:1m;#    ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;#    ssl_prefer_server_ciphers  on;#    location / {#        root   html;#        index  index.html index.htm;#    }#}}

我们要实现反向代理就是要

  • 新增我们自己的server
    server {listen       80;server_name  浏览器可能访问的域名1;proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Server $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;location / {proxy_pass http://127.0.0.1:9001;   # 转发路径proxy_connect_timeout 600;proxy_read_timeout 600;}}server {listen       80;server_name  浏览器可能访问的域名2;proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Server $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;location / {proxy_pass http://127.0.0.1:10011;  # 转发路径proxy_connect_timeout 600;proxy_read_timeout 600;}}

nginx 通过监听80端口 进而监听我们修改后的域名,成功匹配后呢,通过location转发到我们自定义的路径

转载于:https://www.cnblogs.com/ZhuChangwu/p/11150437.html

Nginx安装及配置反向代理相关推荐

  1. Nginx安装/负载均衡/反向代理配置与调优

    [Nginx安装] Linux下直接使用包管理安装 sudo apt-get install nginx 使用whereis命令查看安装位置 whereis nginx #sbin下代表nginx可执 ...

  2. nginx 1.16 配置反向代理,http,https,ssl

    需求 之前云服务上仅部署了门户网站,后来要做小程序开发,还有各项目网站.之前是通过域名+端口访问, 现改为启用二级域名,共用公网IP,80(http).443(https)端口,通过nginx按域名做 ...

  3. 【笔记】openwrt - nginx编译、配置反向代理(https下netdata不显示)

    文章目录 # 完整交叉编译 # 完整交叉编译ssl # SDK编译 # 配置反向代理 # 群晖内置nginx配置 # 完整交叉编译 参考:https://servertesa.wordpress.co ...

  4. Nginx安装手册,反向代理,负载均衡,keepalived高可用

                Nginx安装手册    附件在下面 看附件中的 pdf 中的资料写的比较清晰: nginx安装环境 nginx是C语言开发,建议在linux上运行,本教程使用Centos6. ...

  5. 带你了解什么是Nginx(实操反向代理-负载均衡)

    文章目录 一.前言 ①什么是Nginx? ②服务中为什么要使用Nginx原因? 二.安装Nginx 1.介绍 2.安装 ①在Linux系统安装nginx ②上传并解压到/usr/local/目录下 ③ ...

  6. 【Asp.net Core】在 Linux 子系统中安装 nginx 并配置反向代理

    上一篇鸟文中,老周已经介绍过在 Ubuntu 子系统中安装 dotnet-sdk 的方法,本文老周给大伙伴们说说安装 nginx 服务,并配置反向代理.同样,老周假设你从来没有用过 Linux,所以老 ...

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

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

  8. 如何在 FreeBSD 10.2 上安装 Nginx 作为 Apache 的反向代理

    如何在 FreeBSD 10.2 上安装 Nginx 作为 Apache 的反向代理 Nginx 是一款自由开源的 HTTP 和反向代理服务器,也可以用作 POP3/IMAP 的邮件代理服务器.Ngi ...

  9. apache 反向代理_通过 Apache 与 Nginx 配置 AJP 配置反向代理

    ↑ 点击上面 "时代Java"关注我们, 关注新技术,学习新知识! 前言 目前,随着公有云的出现,一些大型的服务提供商将很多的基础服务以公有云的形式发布出来,而企业则可以使用这些基 ...

最新文章

  1. 人工智能用哪个语言好 选择Python语言怎么样
  2. Android赚钱的方法--界面嵌入有米广告(持续关注中)
  3. hdu5438(2015长春网络赛B题)
  4. HTML5中拖动功能的添加属性,html5中可拖动dragable属性及其他成员的讲解
  5. ConvolverNode
  6. ssms只有空白解决方案_SSMS中的解决方案和项目概述
  7. 【每日算法Day 71】面试官想考我这道位运算题,结果我给出了三种解法
  8. 学一门计算机语言大体的过程,学习一门新编程语言的6个步骤
  9. SQL 语言特点、功能和数据类型
  10. linux卸载设备驱动命令,Linux设备驱动程序加载/卸载方法 insmod和modprobe命令
  11. 一阶惯性传感器的快速跟踪性能实现
  12. 嵌入式Linux开发环境搭建
  13. 比例电磁阀(零)液压知识
  14. jdbc——mysql学习
  15. 解决IDEA报Unmapped Spring configuration files found.Please configure Spring facet
  16. 统计学基础(四)—卡方检验怎么用?
  17. 【Linux】虚拟地址空间 --- 虚拟地址、空间布局、内存描述符、写时拷贝、页表…
  18. 倍福TwinCAT3导入TwinCAT2项目的方法
  19. 计算机附近组件的安装方法,在计算机上安装组件
  20. create_calib_data算子说明

热门文章

  1. android 文件删除命令大全,Android中删除sdcard里文件的命令
  2. vb html table,VB6.0 如何是用 datatable
  3. python画圆填色橙色_基于TPC-C基准的Python ORM的性能测试详解
  4. 某程序员9点离岗被主管罚款200,写bug扣光主管年终奖?
  5. 前端系统化学习【JS篇】:(四-3)基本数据类型之Boolean篇
  6. 自学前端很难吗?只要你足够努力,高中学历也能获得offer
  7. 不是计算机专业,哪个专业更适合学习web前端
  8. 有人说,30岁是程序员的一个末日期,写给30岁的程序员,到底该怎么做呢
  9. Java 中的接口有什么作用?为什么不直接用类?
  10. 郑州轻工业大学c语言考试题库,2016年郑州轻工业学院计算机与通信工程学院C语言程序设计考研复试题库...