Nginx介绍
是一款轻量级的web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
特点:占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,
国内使用nginx:百度、京东、新浪、网易、腾讯、淘宝等
官网:https://nginx.org/
Nginx下载和安装
安装过程:
-
安装依赖包 yum -y install gcc pcre-devel zlib-devel openssl-devel
-
下载Nginx安装包 wget https://nginx.org/download/nginx-1.26.2.tar.gz(下载安装包的连接地址) (wget 使用命令先安装 yum install wget)
-
解压 tar -zxvf nginx-1.16.1.tar.gz
-
cd nginx-1.16.1
-
./configure --prefix=/usr/local/nginx(安装到指定目录下)
-
make && make install(编译并执行install)
Nginx目录结构
可以安装yum install tree 用来展示树形结构目录
cd /usr/local/nginx
tree
Nginx命令
cd /usr/local/nginx/sbin
在启动Nginx服务之前可以先检查一下conf/nginx.conf文件配置是否有错误:
./nginx -t
启动和停止
启动nginx :
./nginx(相对路径启动)
/usr/local/nginx/sbin/nginx(绝对路径启动)
查看nginx进程 : ps -ef | grep nginx
systemctl stop firewalld(关闭防火墙)
ip addr 查看ip
停止服务:
/usr/local/nginx/sbin/nginx -s stop
重新加载配置文件:
./nginx -s reload
配置环境变量:
vim /etc/profile
立即生效:
source /etc/profile
启动:nginx
停止:nginx -s -stop
Nginx配置文件结构
- 全局块 和Nginx运行相关的全局配置
- events块 和网络连接相关的配置
- http块 代理、缓存、日志记录、虚拟主机配置
- http全局块
- Server块
- Server全局块
- location块
注意:http块中可以配置多个Server块,每个Server块可以配置多个location块
cd /usr/local/nginx/conf
cat nginx.conf
#全局块
#user nobody;
worker_processes 1;#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;#pid logs/nginx.pid;
#events块
events {
worker_connections 1024;
}#http块
http {#http全局块
include mime.types;
default_type application/octet-stream;#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;
sendfile on;
#tcp_nopush on;#keepalive_timeout 0;
keepalive_timeout 65;#gzip on;
#server块
server {
#server全局块
listen 80;
server_name localhost;#charset koi8-r;
#access_log logs/host.access.log main;
#serverlocation块
location / {
root html;
index index.html index.htm;
}#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;
}# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;# location / {
# root html;
# index index.html index.htm;
# }
#}}
Nginx静态资源部署
Nginx可以作为静态web服务器来部署静态资源。静态资源指在服务端真实存在并且能够直接展示的一些文件,如html、css、js、图片视频等静态资源。
相对于Tomcat,Nginx处理静态资源的能力更高效,所以在生产环境下,一般都会将静态资源部署到Nginx中。将静态资源部署到Nginx非常简单,只需要将文件复制到Nginx目录下的html目录即可。
server{
listen 80; #监听端口号
server_name localhost; #服务器名称
location / { #匹配客户端url
root html; #指定静态资源目录
index index.html; #指定默认首页
}
}
Nginx反向代理
- 正向代理
一个位于客户端和原始服务器之间的服务器,为了从原始端获取内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。正向代理的典型用途是为在防火墙内的局域网客户端提供访问internet的途径。- 正向代理一般在客户端设置代理服务器,通过代理服务器转发请求,最终访问到目标服务器
- 正向代理一般在客户端设置代理服务器,通过代理服务器转发请求,最终访问到目标服务器
- 反向代理
反向代理服务器位于用户和目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源,反向代理服务器负责将请求转发给目标服务器。- 用户不需要知道目标服务器的地址,也无须在用户端作任何设定。(客户无感知)
- 用户不需要知道目标服务器的地址,也无须在用户端作任何设定。(客户无感知)
Ngin配置反向代理
server{
listen 82;
server_name localhost;
location / {
proxy_pass http://192.168.93.131:8080; #反向代理配置,将请求转发到指定服务
}
}
Nginx负载均衡
早期的网站流量和业务功能比较简单,单台服务器就可以满足基本需求,但随着互联网的发展,业务流量越来越大并且业务逻辑也越来越复杂,单台服务器的性能及单点故障问题就凸显出来了,因此需要多台服务器组成应用集群,进行性能的水平扩展以及避免单点故障的出现。
- 应用集群:将同一应用部署到多台机器上,组成应用集群,接受负载均衡器分发的请求,进行业务处理并返回响应数据
- 负载均衡器:将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理
本质上是基于反向代理实现的负载均衡
Nginx配置负载均衡
upstream targetserver{
server 192.168.93.131:8080; #upstream指令可以定义一组服务器
server 192.168.93.131:8081;
}
server{
listen 8080;
server_name localhost;
location / {
proxy_pass http://targetserver; #反向代理配置,将请求转发到指定服务
}
}
负载均衡策略:
名称 | 说明 |
轮询 | 默认方式 |
weight | 权重方式 |
ip_hash | 依据ip分配, |
least_conn | 依据最少连接 |
url_hash | 依据url分配 |
fair | 依据响应时间 |
upstream targetserver{
server 192.168.93.131:8080 weight=10; #upstream指令可以定义一组服务器
server 192.168.93.131:8081 weight=5; #weight数值越大被分发几率越大
}
server{
listen 8080;
server_name localhost;
location / {
proxy_pass http://targetserver; #反向代理配置,将请求转发到指定服务
}
}