学习内容:学习Nginx(Day69)

1、hosts文件修改主机域名
2、安装Nginx
3、nginx的应用场景


1、hosts文件修改主机域名

(1)现在:http://localhost:8080/AppInfoSystem需要通过http://www.huzige.com:8080/AppInfoSystem访问。
Linux下的hosts文件所在路径: /etc/hosts
Win下的host: C:\Windows\System32\drivers\etc

#My host
127.0.0.1   www.huzige.com
127.0.0.1   xx.huzige.com

如果不想要访问路径中的端口号,可以将项目中的端口号改为80。

2、安装Nginx

(1)Nginx (“engine x”) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。

Web服务器分2类:
1.web服务器:Apache 服务器、Nginx、IIS 微软件提供的服务器
2.web应用服务器:tomcat、resin、jetty

区分:web服务器不能解析jsp等页面,只能处理js、css、html等静态资源。
并发:web服务器的并发能力远高于web应用服务器。

(2)windows安装:下载nginx-1.xx.x.zip解压得到:–注意路径中不要包含中文。双击nginx.exe启动。
三个命令:(在 CMD 中执行)
启动:start nginx.exe
停止:nginx.exe -s stop
重新加载:nginx.exe -s reload
出现2个进程nginx才算是真正的启动成功,杀死进程命令:taskkill /f /t /im nginx.exe

(3)Linux安装
1.gcc 安装:安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:yum install gcc-c++
2.PCRE pcre-devel 安装:PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:yum install -y pcre pcre-devel
3.zlib 安装:zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。yum install -y zlib zlib-devel
4.OpenSSL 安装:OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。yum install -y openssl openssl-devel
5.下载Nginx安装包
官网下载,直接下载.tar.gz安装包,地址:https://nginx.org/en/download.html
或者使用wget命令下载(推荐)。确保系统已经安装了wget,如果没有安装,执行 yum install wget 安装。wget -c https://nginx.org/download/nginx-1.18.0.tar.gz
下载好后上传到服务器的/usr/local目录下,解压tar -zxvf nginx-1.18.0.tar.gz
进入目录cd nginx-1.18.0,使用默认配置./configure,编译安装make & make install
进入目录cd /usr/local/nginx/sbin/
启动./nginx
停止./nginx -s stop
退出./nginx -s quit
重新加载./nginx -s reload

(4)Nginx的配置文件
Nginx的核心配置都在/usr/local/nginx/nginx.conf中

#user root root; #配置用户或者组,默认为nobody nobody。
worker_processes  2; #允许生成的进程数,默认为1
#error_log
logs/error.log;
#error_log
logs/error.log  notice;
#error_log
logs/error.log  info;
#pid       logs/nginx.pid; #指定nginx进程运行文件存放地址
events {worker_connections  1024;
}
http {include       mime.types; #文件扩展名与文件类型映射表default_type application/octet-stream; #默认文件类型,默认为text/plain#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; #combined为日志格式的默认值 sendfile        on; #允许sendfile方式传输文件,可以在http块,server块,location块#tcp_nopush     on; #keepalive_timeout  0;keepalive_timeout  65; #连接超时时间,默认为75s,可以在http,server,location块    #gzip  on; server {listen       80; #监听端口       server_name  localhost; #监听地址#charset koi8-r; #access_log logs/host.access.log  main;location / { #/代表所有请求root   html; #根目录index  index.html index.htm; #设置默认页#deny 127.0.0.1;  #拒绝的ip       } #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;}}
}

(5)Location语法
1.= 严格匹配。如果请求匹配这个location,那么将停止搜索并立即处理此请求
2.~ 区分大小写匹配(可用正则表达式)
3.~* 不区分大小写匹配(可用正则表达式)
4.!~ 区分大小写不匹配
5.!~* 不区分大小写不匹配
6.^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式

nginx.conf文件中添加server块.

server {listen       88;server_name  localhost;#/表示所有请求都过滤,优先级最低location / {#root   html;#index  index.html index.htm;echo "hello nginx";       }#=表示精确匹配,优先级最高location = /a {echo "/a";}#^~代表以xxx开始,第二优先location ^~ /a {echo "^~ /a";}#~代表正则匹配,第三优先location ~ /[0-9] {echo "~ /[0-9]";}
}

为了方便展示,在虚拟机上安装echo模块:https://github.com/openresty/echo-nginx-module/tags
上传到nginx同目录下并解压:tar -zxvf echo-nginx-module-0.62.tar.gz
先停止nginx服务,然后cd nginx-1.18.0/
执行:./configure --add-module=/usr/local/echo-nginx-module-0.62
编译:make
复制:cp objs/nginx ../nginx/sbin/,再次启动即可

安装curl:yum install curl
测试:curl http://localhost:88 输出:hello nginx
curl http://localhost:88/a 输出:/a
curl http://localhost:88/abc 输出:^~ /a
curl http://localhost:88/1输出:~ /[0-9]

3、nginx的应用场景

(1)静态服务器
静态资源是指非服务器运行动态生成的文件,主要包括浏览器端渲染(html、css、js)、图片(jpeg、gif、png)、视频文件(flv、mpeg)、其他文件(TXT等任意下载文件)。
这些静态资源可以保存在 /usr/local/nginx/static 路径下,当项目打成jar包后放到虚拟机内运行时,可以从外部获取静态资源。

修改nginx.conf文件

server {listen       80; #监听端口       server_name  localhost; #监听地址location / { #/代表所有请求proxy_pass   http://127.0.0.1:8082; #代理,项目端口号为8082} #用正则表达式,当请求的后缀为这些时会找到根目录的static目录下location ~ .*\.(jpg|jpeg|png|js|css|html|txt) { root static;}error_page   500 502 503 504  /50x.html; #错误页location = /50x.html {root   html;}
}

重新启动nginx服务器,使用命令java -jar test.jar运行项目,项目启动后从 /usr/local/nginx/static 路径获取静态文件,在宿主机使用虚拟机地址就可以访问项目。

(2)虚拟主机
虚拟主机,就是把一台物理服务器划分成多个“虚拟”的服务器,每一个虚拟主机都可以有独立的域名和独立的目录。配置的时候和静态资源服务器配置方法一致,只需要多添加一个server节点,保证访问的url不一样就可以了。

首先配置主机名,起两个别名,方便查看。

127.0.0.1 www.hr.com www.hzg.com

修改nginx.conf文件

server{listen       81;server_name    www.hr.com;#监听地址分别为主机名的两个别名location / {root html2;#请求到的页面是自己重新创建的默认页面index index.html;       }
}server{listen       81;server_name    www.hzg.com;location / {root html3;index index.html;}
}

在 /usr/local/nginx/ 目录下创建两个不同的html目录和默认页面,并重新启动nginx服务器。
cp -r html/ html2
cp -r html/ html3

在宿主机上使用不同的主机地址访问nginx服务器,以达到访问多台服务器的效果。
服务器地址分别为www.hr.com:81,www.hzg.81

(3)反向代理
使用代理服务器的好处有:
1.提高访问速度。由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门网站能明显提高访问速度。
2.防火墙作用。由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可以在代理服务器上设限,过滤掉某些不安全信息。同时正向代理中上网者可以隐藏自己的IP,免受攻击。
3.突破访问限制。互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点,通俗说,我们使用的翻墙浏览器就是利用了代理服务器,可以直接访问外网。

正向代理(forward proxy):一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并制定目标(原始服务器),然后代理向原始服务器转发请求并将获得的内容返回给客户端,客户端才能使用正向代理。我们平时说的代理就是指正向代理。
反向代理(Reverse Proxy):用户→nginx→tomcat,以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求的客户端,此时代理服务器对外表现为一个反向代理服务器。

server{listen       80;server_name www.hzg.com;location /{#tomcat服务器proxy_passhttp://127.0.0.1:8080; }
} 

(4)负载均衡
扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载均衡(Load Balance)。
1.一种是通过硬件来进行解决,常见的硬件有NetScaler、F5、Radware和Array等商用的负载均衡器,但是它们是比较昂贵的。
2.一种是通过软件来进行解决的,常见的软件有LVS、Nginx、apache等,它们是基于Linux系统并且开源的负载均衡策略。

nginx的负载均衡是通过它的反向代理能力实现的。

upstream tomcatserver {server   127.0.0.1:8080 weight=1;server   127.0.0.1:8081 weight=2; #权重越大使用率越高}server{listen       80;server_name www.hzg.com;location /{proxy_pass http://tomcatserver;}
}

这样,当访问本地的80端口的时候,会采用轮询的方法跳转到8080端口和8081端口,其中8081端口的权重为8080端口的两倍,就是8081被访问两次,8080会被访问一次。

nginx支持的负载均衡调度算法方式:
weight轮询(默认)。接收到的请求按照顺序逐一分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,nginx会自动将该服务器剔除出队列,请求受理情况不会受到任何影响。 这种方式下,可以给不同的后端服务器设置一个权重值(weight),用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的。
least_conn。最少连接,将新请求分发给不太繁忙的服务器,避免服务器过载。
ip_hash。每个请求按照发起客户端的ip的hash结果进行匹配,这样的算法下一个固定ip地址的客户端总会访问到同一个后端服务器,这也在一定程度上解决了集群部署环境下session共享的问题。
fair。智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少;结合了前两者的优点的一种调度算法。但是需要注意的是nginx默认不支持fair算法,如果要使用这种调度算法,请安装upstream_fair模块
url_hash。按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在nginx作为静态服务器的情况下提高缓存效率。同样要注意nginx默认不支持这种调度算法,要使用的话需要安装nginx的hash软件包

学习日志day69(2021-11-09)(1、hosts文件修改主机域名 2、安装Nginx 3、nginx的应用场景)相关推荐

  1. hosts文件修改后域名无法访问

    今天修改hosts文件遇到这样一个问题:         博主先是在hosts文件中屏蔽了www.imooc.com这个域名 就是在posts文件中加了这句话 127.0.0.1 www.imooc. ...

  2. mac显示隐藏文件夹与显示及hosts文件修改

    终端执行  defaults write com.apple.finder AppleShowAllFiles -bool true    显示隐藏文件夹 defaults write com.app ...

  3. Linux操作系统下/etc/hosts文件配置方法(域名映射)

    文章目录 hosts文件 hosts格式配置 hosts文件 hosts -- the static table lookup for host name(主机名查询静态表). hosts文件是Lin ...

  4. hosts文件修改后无法保存问题

    hosts文件在windows目录下的位置(我的是win10系统,其他系统大同小异) C:\Windows\system32\drivers\etc\hosts linux系统hosts位置 /etc ...

  5. Hosts文件修改和修改某个用户对Hosts的控制权限

    Hosts文件修改和修改某个用户对Hosts的控制权限 相信大家都有一种感受,那就是对于一下技术性的东西,CSDN搜索或者说搜索中文基本上在前几页看到的答案都是基本雷同的,这里分享一下标题的解决方法, ...

  6. hosts文件修改--域名重定向修改记录

    寒假在家,效率保持低迷,其中一个原因就是太容易被微博热点和百度热点干扰! 为此,本着治标不治本的思想,决定通过修改hosts文件来实现域名重定向功能. 本文主要记录了对hosts文件的更改,并不断更新 ...

  7. 利用hosts文件修改域名映射实现Nignx反向代理

    利用hosts文件修改域名映射实现Nignx反向代理 windos下查看dns地址 域名解析的原理 一.修改本地映射 二.nginx反向代理 2.1 概念 2.2 配置过程 三.整个访问流程 wind ...

  8. 昊鼎王五:centos7上如何使/etc/hosts文件修改后生效

    昊鼎王五:centos7上如何使/etc/hosts文件修改后生效 修改/etc/hosts修改保存之后理论上是立即生效的,也存在未生效的情况.这时的解决方案有: 1) 重启机器 2) 重启服务 Ce ...

  9. 电脑Hosts文件修改后无法保存的原因及解决方法教程

    Hosts文件是系统中的重要文件,它能屏蔽网站.帮助计算机加速域名解析.方便用户使用等,具有很多实用功能.最近有许多用户们人在向小编咨询过Hosts文件的保存问题,在Hosts文件修改之后,发现无法保 ...

最新文章

  1. iOS 发大招 otherButtonTitles:(nullable NSString *)otherButtonTitles, ... 写法 编写通用类的时候关于可变参数的处理...
  2. GPIO 输入—按键检测
  3. php 输出 echo、print_r、print、var_dump 、die 区别
  4. Pandas matplotlib 无法显示中文
  5. 微信小程序批量获取input的输入值,监听输入框,数据同步
  6. POJ 2723 2-SAT
  7. cadence SPB 16.2下载地址
  8. 随机森林:对UCI数据集的分类实现
  9. Ubuntu18.04+openv-2.4.9
  10. H3C无线 AC旁挂式部署无线开局(WEB版)
  11. oracle设置系统权限,Oracle数据库权限管理
  12. CentOS7下ldap的安装
  13. EF中一种简单的多条件动态查询方法
  14. 福莫特罗行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  15. 电信物联网开放平台_NB-IoT业务对接 Java 后台、Android 前端已完成预研
  16. java实现上传文件夹
  17. Flutter之基础Widget
  18. c语言中怎么将lg换成ln,lg和ln的换算(ln和log怎么转化)
  19. Charles4.6.2版本手机抓包设置,抓包失败的解决方法详解
  20. 三菱fx2n64mr说明书_FX2N-64MR-DS手册三菱可编程控制器FX2N-64MR-DS使用说明书 - 广州凌控...

热门文章

  1. vue-video-player 更改视频源
  2. video.js兼容微信浏览器,(播放.m3u8视频源)解决微信浏览器黑屏问题
  3. 支持markdown的服务器,Algernon:支持Lua,Markdown,HTTP/2的全功能Web服务器
  4. 超详细!手把手教你使用YOLOX进行物体检测(附数据集)
  5. 单片机系统测试c语言程序,宏晶最新1T8051单片机内部EEPROM测试C语言程序
  6. 29.4米/天!安百拓智能岩心钻机在川藏铁路创造深孔钻进新纪录
  7. 肠·道 | 7月14日,9位专家北京录制,开放140位现场观众!
  8. emqx集群部署教程
  9. Android 自定义 View 三步骤
  10. 主要针对项目路径发生变化产生 报错:Project SDK is not defined