1.概念
Nginx是一个高性能的HTTP和反向代理服务器,它可以用来处理静态文件,负载均衡,反向代理等功能。
Nginx的来历是这样的:它是由俄罗斯人伊戈尔·赛索耶夫为Rambler.ru站点开发的,第一个公开版本发布于2004年10月4日。
Nginx的优点有:
1. 配置简洁,易于维护
2.静态处理性能高,占用内存少,支持高并发
3.支持多种负载均衡策略,如轮询,权重,IP绑定等
4.支持热部署,不间断服务
5.支持多语言通用服务器
Nginx的缺点有:
1.对动态请求的处理需要配合其他后端服务器,如PHP-FPM,Tomcat等
2.模块相对较少,不如Apache丰富
3.对Windows支持不太好
正向代理是指客户端通过代理服务器来访问外部网络,代理服务器将客户端的请求转发给目标服务器,并将获得的内容返回给客户端。正向代理可以隐藏客户端的真实身份,为客户端提供访问控制,缓存等功能。
反向代理是指外部网络通过代理服务器来访问内部网络,代理服务器将请求转发给后端服务器,并将获得的结果返回给外部网络。反向代理可以隐藏后端服务器的真实身份,为后端服务器提供负载均衡,安全防护,缓存等功能。
Nginx作为反向代理服务器的工作流程:
1.客户端给服务器发送请求,连接服务器,用户不知道服务器地址,只有反向代理服务器的地址是公开的
2.请求直接发给反向代理服务器
3.反向代理服务器将请求转发给后边的web服务器web服务器 N台反向代理服务器转发请求会轮询进行
4. web服务器收到请求进行处理,得到结果
5. web服务器将处理结果发送给反向代理服务器
6.反向代理服务器将拿到的结果转发给客户端
2.工具下载
使用Nginx需要用到的工具有 pcre库,zlib库,OpenSSL库
pcre库下载地址:这里
zlib库下载地址:这里
OpenSSL库下载地址:这里
Nginx下载地址:这里
下载好这些包需要上传到服务器,进行解压下载
3.解压安装
一下面几个包为例
1.解压安装pcre-8.40.tar.bz2文件
顺序执行以下命令
a. tar -jxvf pcre-8.40.tar.bz2
b. cd pcre-8.40/
c. ./configure
d. make
e. sudo make install
2.解压安装zlib-1.2.11.5.tar.gz文件
顺序执行以下命令
a. tar -zxvf zlib-1.2.11.tar.gz
b. cd zlib-1.2.11/
c. ./configure
d. make
e. sudo make install
3.解压安装openssl-1.0.1t.tar.gz文件
顺序执行以下命令
a. tar -zxvf openssl-1.0.1t.tar.gz
b. cd openssl-1.0.1t/
c. ./config
d. make
e. sudo make install
4.解压安装nginx-1.10.1.tar.gz 文件
顺序执行以下命令
a. tar -zxvf nginx-1.10.1.tar.gz
b. cd nginx-1.10.1/
c. ./configure
d. make
e. sudo make install
解压之后
注意:在安装nginx文件时如果使用来工作需要同时安装依赖,使用如下命令
#指定了安装目录,以及依赖
sudo ./configure --sbin-path=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=../pcre-8.40 --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-1.0.1t
指定了安装目录在 /usr/local/nginx 下,以及启动文件 nginx 也在该目录下
安装后的目录
在执行make或者make install命令时,如果出现 all warnings being treated as errors 的问题,表示把警告信息当成错误信息,可以使用如下命令
make -no-warings-are-errors
sudo make install -no-warings-are-errors
- nginx安装也可以使用 apt-get命令
#使用apt-get命令安装
sudo apt-get install nginx
# nginx文件安装完成之后的文件位置:
/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放静态文件
/var/log/nginx:存放日志
- nginx的启动关闭命令
#查看nginx的启动转态
ps aux|grep nginx
#启动命令,需要进入到/usr/local/nginx文件下使用
sudo ./nginx
#重新加载
sudo ./nginx -s reload
#停止命令
sudo ./nginx -s stop
#以下是使用yum命令安装时使用的命令
# 要停止Nginx服务,请运行:
sudo systemctl stop nginx
# 要再次启动,请键入:
sudo systemctl start nginx
# 重新启动Nginx服务:
sudo systemctl restart nginx
# 在进行一些配置更改后重新加载Nginx服务:
sudo systemctl reload nginx
# 如果你想禁用Nginx服务在启动时启动:
sudo systemctl disable nginx
# 并重新启用它:
sudo systemctl enable nginx
- nginx配置文件,这里使用了上面安装依赖以及路径的的命令,需要下载tar.gz文件上传服务器,
user www-data; #所属用户(权限),可以设置为root
worker_processes auto; #设置连接的最大线程数
pid /run/nginx.pid; #在 /run/ 目录下生成pid文件
include /etc/nginx/modules-enabled/*.conf;
# nginx的事件处理
events {
use epoll; #添加该行表示多路IO转接模型使用epoll
worker_connections 768; #最大连接数
# multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
server{
listen 80; #绑定的端口号
server_name localhost; #设定的域名
charset utf8; #编码
# \ 表示一个指令,相当于 \index.html
location \ { #处理客户端的请求
root html; #表示查找的根目录,都是相对于 /usr/local/nginx 目录
}
# \hello 表示一个目录
location \hello\ {
root html;
}
location \upload\ {
root html;
index upload.html;#默认打开的网页
}
}
作为web服务器配置实例
- 作为反向代理服务器
存在三个角色:
1.客户端:使用浏览器作为客户
2.反向代理服务器:windows下的nginx配置文件
3.web服务器:使用上面ubuntu中配置好的nginx服务器
->配置windows下nginx文件
需要在官网上下载nginx包,以下中随便一个都行
解压出来
在当前目录右击鼠标在->终端打开,输入下面命令启动服务器
配置方向代理服务器文件,进入conf目录,打开nginx.conf文件,添加以下内容
server {#需要代理几台服务器就需要添加几个server模块
listen 80; #客户端反向代理服务器,代理服务器监听的端口
server_name test.com; #域名
location / {
#反向代理服务器转发指令, http:// 固定
proxy_pass http://robin.test.com;
}
}
#添加一个代理模块
upstream robin.test.com
{
server 192.168.71.128:80;
}
具体内容
本地host所在的目录->C:\Windows\System32\drivers\etc,需要使用管理员打开host文件
配置内容如下:
- 负载均衡配置
反向代理的中间产物 server{ listen 80; server_name test1.com; location \ { porxy_pass http://test1.com; } } upstream test1.com{ server 192.168.247.135:80; } server{ listen 80; server_name test2.com; location \ { porxy_pass http://test2.com; } } upstream test2.com{ server 192.168.247.250:80; } 反向代理变成负载均衡配置项 server{ listen 80; server_name localhost; location \ { proxy_pass http://linux.com } } upstream linux.com{ server 192.168.247.135:80 weight=2; server 192.168.247.250:80 weight=1; }