Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev(伊戈尔·西索夫)所开发,供俄国大型的入口网站及搜索引擎Rambler(漫步者)(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:新浪、网易、 腾讯等。
优点:

  1. 占用内存少,并发能力强
  2. Nginx专为性能优化而开发, 在高连接并发的情况下,能够支持高达 50,000 个并发连接数的响应.
  3. Nginx支持热部署, 可以在不间断服务的情况下,对软件版本进行升级.

应用场景

  1. http服务器: Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
  2. 虚拟主机: 可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
  3. 反向代理,负载均衡 : 当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

安装

  1. yum install gcc-c++
  2. yum install -y pcre pcre-devel
  3. yum install -y zlib zlib-devel
  4. yum install -y openssl openssl-devel

再下载nginx的tar包,解压

  1. tar -xvf nginx-1.17.8.tar

解压后进入目录,并执行

  1. ./configure \
  2. --prefix=/usr/local/nginx \
  3. --pid-path=/var/run/nginx/nginx.pid \
  4. --lock-path=/var/lock/nginx.lock \
  5. --error-log-path=/var/log/nginx/error.log \
  6. --http-log-path=/var/log/nginx/access.log \
  7. --with-http_gzip_static_module \
  8. --http-client-body-temp-path=/var/temp/nginx/client \
  9. --http-proxy-temp-path=/var/temp/nginx/proxy \
  10. --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
  11. --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
  12. --http-scgi-temp-path=/var/temp/nginx/scgi

这一坨东西会生成makefile文件

之后,创建临时文件目录

  1. mkdir /var/temp/nginx/client -p

执行make进行编译
再执行

  1. make install

进行安装
之后,可进入安装目录,运行nginx。并且可以通过浏览器访问,默认端口80

虚拟主机

虚拟主机指的是,在一台服务器中,我们使用Nginx,来配置多个网站.
如何区分不同的网站:

  1. 端口不同
  2. 域名不同

nginx配置文件详解

文件在

  1. cd /usr/local/nginx/conf
  2. nginx.conf 就是Nginx的配置文件
  1. worker_processes 1; #work的进程数,默认为1
  2. #配置 影响nginx服务器与用户的网络连接
  3. events {
  4. worker_connections 1024; #单个work 最大并发连接数
  5. }
  6. # http块是配置最频繁的部分 可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能
  7. http {
  8. # 引入mime类型定义文件
  9. include mime.types;
  10. default_type application/octet-stream;
  11. sendfile on;
  12. keepalive_timeout 65; # 超时时间
  13. #server 配置虚拟主机的相关参数 可以有多个,一个server就是一个虚拟主机
  14. server {
  15. # 监听的端口
  16. listen 80;
  17. #监听地址
  18. server_name localhost;
  19. # 默认请求配置
  20. location / {
  21. root html; # 默认网站根目录
  22. index index.html index.htm; # 欢迎页
  23. }
  24. # 错误提示页面
  25. error_page 500 502 503 504 /50x.html;
  26. location = /50x.html {
  27. root html;
  28. }
  29. }
  30. # 配置新的server
  31. server {
  32. listen 81; # 修改端口
  33. server_name localhost;
  34. location / {
  35. root html81; # 重新制定一个目录
  36. index index.html index.htm;
  37. }
  38. }
  39. }

配置完要重新加载一下

  1. sbin/nginx -s reload

域名

什么是域名

网址就是域名,是一个网站的地址, 由域名提供商提供,一般需要购买.

www.baidu.com

www.taobao.com

域名级别
  • 一级域名
    • 比如 .com .org .cn
  • 二级域名
    • 二级域名是在一级域名前加一级
    • 二级域名: baidu.com , zhihu.com
  • 三级域名
    • www.baidu.com
    • image.baidu.com

域名绑定
  • 一个域名对应一个ip地址,一个ip地址可以被多个域名绑定。
  • 通过 DNS服务器去解析域名

配置域名映射

本地测试可以修改hosts文件。修改window的hosts文件:(C:\Windows\System32\drivers\etc)

  • 可以配置域名和ip的映射关系,如果hosts文件中配置了域名和ip的对应关系,不需要走dns服务器。

正向代理与反向代理

正向代理就是我们用梯子翻墙。代理服务器代理的是客户端。
反向代理代理的是服务器。就是说外部的请求要先打到代理服务器,后到应用服务器。

Nginx相关的配置

  1. #反向代理配置
  2. #upstream中的server是真正处理请求的应用服务器地址
  3. upstream lagou1{
  4. #用server定义HTTP地址
  5. server 192.168.52.100:8080;
  6. }
  7. server {
  8. listen 80;
  9. server_name www.lagou1.com;
  10. location / {
  11. # 利用 proxy_ pass可以将请求代理到upstream命名的HTTP服务
  12. proxy_pass http://lagou1; #转发到的地址
  13. index index.html index.htm;
  14. }
  15. }
  16. upstream lagou2{
  17. #用server定义HTTP地址
  18. server 192.168.52.100:8081;
  19. }
  20. server {
  21. listen 80;
  22. server_name www.lagou2.com;
  23. location / {
  24. proxy_pass http://lagou2;
  25. index index.html index.htm;
  26. }
  27. }

负载均衡

上游的应用服务器有好几个,请求不能可着一台折腾。
可以这样

  1. #负载均衡
  2. upstream lagouServer{
  3. # 用server定义 HTTP地址
  4. server 192.168.52.100:8081 weight=1;
  5. server 192.168.52.100:8082 weight=10;
  6. }
  1. 让几个服务器都接点请求。