欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nginx

程序员文章站 2022-07-12 16:57:23
...

Nginx

Nginx是一个高性能的Web和反向代理服务器,它具有很多非常优越的特性:

1、作为Web服务器:

相比Apache, Nginx使用更少的资源,支持更多的并发连接,体现更高的效率,这点使Nginx尤其受到虚拟主机提供商的欢迎。能够支持高达50,000个并发连接的响应。
2、作为负载均衡服务器:

Nginx既可以在内部直接支持Rails和PHP,也可以支持作为HTTP个理服务器对外进行服务。Nginx用C编写,不论是系统资源开销还是CPU使用效率都比Perlbal 要好的多。
3、作为邮件代理服务器:

Nginx同时也是一 个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm描述了成功并且美妙的使用经验。
4、Nginx安装非常的简单,配置文件非常简洁(还能够支持perl语法) ,Bugs非常少的服务器:

Nginx启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下进行软件版本的升级。
 

作为Web服务器

Web服务器分2类:

  • web应用服务器,如:
    • tomcat
    • resin
    • jetty
  • web服务器,如:
    • Apache 服务器
    • Nginx
    • IIS

区分:web服务器不能解析jsp等页面,只能处理js、css、html等静态资源。

并发:web服务器的并发能力远高于web应用服务器。

 

反向代理

  • 代理:通过客户机的配置,实现让一台服务器代理客户机,客户的所有请求都交给代理服务器处理。
  • 反向代理:用一台服务器,代理真实服务器,用户访问时,不再是访问真实服务器,而是代理服务器。

nginx可以当做反向代理服务器来使用:

  • 我们需要提前在nginx中配置好反向代理的规则,不同的请求,交给不同的真实服务器处理
  • 当请求到达nginx,nginx会根据已经定义的规则进行请求的转发,从而实现路由功能

利用反向代理,就可以解决我们前面所说的端口问题,如图

Nginx

安装

Nginx

反向代理配置  

Nginx

完整配置:

#user  nobody;
worker_processes  1;
​
events {
   worker_connections  1024;
}
​
http {
   include       mime.types;
   default_type  application/octet-stream;
   sendfile        on;
  
   keepalive_timeout  65;
​
   gzip  on;
server {
       listen       80;
       server_name  manage.leyou.com;
​
       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  api.leyou.com;
​
       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:10010;
proxy_connect_timeout 600;
proxy_read_timeout 600;
       }
   }
}

使用

nginx可以通过命令行来启动,操作命令:

  • 启动:start nginx.exe
  • 停止:nginx.exe -s stop
  • 重新加载:nginx.exe -s reload

Nginx

 

  1. 浏览器准备发起请求,访问http://mamage.leyou.com,但需要进行域名解析
  2. 优先进行本地域名解析,因为我们修改了hosts,所以解析成功,得到地址:127.0.0.1
  3. 请求被发往解析得到的ip,并且默认使用80端口:http://127.0.0.1:80
    本机的nginx一直监听80端口,因此捕获这个请求
  4. nginx中配置了反向代理规则,将manage.leyou.com代理到127.0.0.1:9001,因此请求被转发
  5. 后台系统的webpack server监听的端口是9001,得到请求并处理,完成后将响应返回到nginx
  6. nginx将得到的结果返回到浏览器