Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev(伊戈尔·西索夫)所开发,供俄国大型的入口网站及搜索引擎Rambler(漫步者)(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:新浪、网易、 腾讯等。
优点:
- 占用内存少,并发能力强
- Nginx专为性能优化而开发, 在高连接并发的情况下,能够支持高达 50,000 个并发连接数的响应.
- Nginx支持热部署, 可以在不间断服务的情况下,对软件版本进行升级.
应用场景
- http服务器: Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
- 虚拟主机: 可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
- 反向代理,负载均衡 : 当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
安装
先
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
再下载nginx的tar包,解压
tar -xvf nginx-1.17.8.tar
解压后进入目录,并执行
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
这一坨东西会生成makefile文件
之后,创建临时文件目录
mkdir /var/temp/nginx/client -p
执行make进行编译
再执行
make install
进行安装
之后,可进入安装目录,运行nginx。并且可以通过浏览器访问,默认端口80
虚拟主机
虚拟主机指的是,在一台服务器中,我们使用Nginx,来配置多个网站.
如何区分不同的网站:
- 端口不同
- 域名不同
nginx配置文件详解
文件在
cd /usr/local/nginx/conf
nginx.conf 就是Nginx的配置文件
worker_processes 1; #work的进程数,默认为1
#配置 影响nginx服务器与用户的网络连接
events {
worker_connections 1024; #单个work 最大并发连接数
}
# http块是配置最频繁的部分 可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能
http {
# 引入mime类型定义文件
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65; # 超时时间
#server 配置虚拟主机的相关参数 可以有多个,一个server就是一个虚拟主机
server {
# 监听的端口
listen 80;
#监听地址
server_name localhost;
# 默认请求配置
location / {
root html; # 默认网站根目录
index index.html index.htm; # 欢迎页
}
# 错误提示页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# 配置新的server
server {
listen 81; # 修改端口
server_name localhost;
location / {
root html81; # 重新制定一个目录
index index.html index.htm;
}
}
}
配置完要重新加载一下
sbin/nginx -s reload
域名
什么是域名
网址就是域名,是一个网站的地址, 由域名提供商提供,一般需要购买.
域名级别
- 一级域名
- 比如 .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相关的配置
#反向代理配置
#upstream中的server是真正处理请求的应用服务器地址
upstream lagou1{
#用server定义HTTP地址
server 192.168.52.100:8080;
}
server {
listen 80;
server_name www.lagou1.com;
location / {
# 利用 proxy_ pass可以将请求代理到upstream命名的HTTP服务
proxy_pass http://lagou1; #转发到的地址
index index.html index.htm;
}
}
upstream lagou2{
#用server定义HTTP地址
server 192.168.52.100:8081;
}
server {
listen 80;
server_name www.lagou2.com;
location / {
proxy_pass http://lagou2;
index index.html index.htm;
}
}
负载均衡
上游的应用服务器有好几个,请求不能可着一台折腾。
可以这样
#负载均衡
upstream lagouServer{
# 用server定义 HTTP地址
server 192.168.52.100:8081 weight=1;
server 192.168.52.100:8082 weight=10;
}
让几个服务器都接点请求。