1. nginx基本概念
nginx 是什么 可以做什么事
Nginx 是一个高性能的HTTP和反向代理web服务器,nginx的并发能力在同类型的网页服务器中表现较好,nginx 最大可以支持50000的高并发任务
反向代理
正向代理:
我们要访问外网的时候,我们不可以直接去访问,这个时候我们就要通过一个代理服务器(代理服务器是可以访问外网的代理服务器) 去访问外网。在我们的客户端(浏览器)我们是要配置代理服务器
反向代理:
客户端对反向代理操作是没有感觉的 ,我们只需要去访问反向代理服务器,然后反向代理服务器就会根据我们的访问内容转发到我们想请求我们的资源,这个时候暴露的是反向代理服务器的端口,我们真正的服务器的端口是配隐藏的。请求的人 会认为反向代理和真实的服务器是一个服务器(客户端不需要进行任何的配置
负载均衡
客户端发送多个请求到服务器,有一些请求可能要操作数据库,请求操作完成之后返回我们数据。当我们请求过多的时候我们就要增加服务器个数(集群) ,然后通过我们的反向代理服务器,平均的分发到我们的各个服务器上,这样就实现了高并发的分发降低单个服务器的处理压力
动静分离
静态资源放到静态服务器下 动态资源放到动态服务器下(其实也可以放静态资源到动态服务器中)。在客户端进行请求的时候,我们根据请求去转发我们的请求,请求静态资源就转发到静态资源服务器,请求动态资源就转发到动态资源服务器。对静态请求和动态请求的分开转发
好处:可以降低我们动态资源服务器去解析我们的静态资源 ,这样可以让动态资源服务器更专注于 做我们的事,从而提高效率
2. nginx 安装常用命令
linux安装nginx
-
安装命令
sudo apt-get update sudo apt-get install nginx
nginx 目录
-
nginx 的启动文件目录
/usr/sbin #在这个文件夹下有一个nginx的文件
-
nginx 的html 目录
/usr/share/nginx/html #在这下面有一个默认的index.html 的文件
-
nginx 的nginx.conf配置文件位置
/etc/nginx/nginx.conf
linux卸载nginx
-
卸载命令
# 卸载删除除了配置文件以外的所有文件。 sudo apt-get remove nginx nginx-common # 卸载所有东东,包括删除配置文件。 sudo apt-get purge nginx nginx-common # 在上面命令结束后执行,主要是卸载删除Nginx的不再被使用的依赖包。 sudo apt-get autoremove #卸载删除两个主要的包 sudo apt-get remove nginx-full nginx-common
nginx常用命令
注意:nginx 执行脚本位置 /usr/sbin/目录
-
查看nginx 版本号
./nginx -v
-
启动nginx
./nginx
-
重加载nginx
./nginx -s reload
-
关闭nginx
./nginx -s stop
-
查看nginx 是否 启动 查看进程
ps -ef | grep nginx
nginx配置文件
位置 :/etc/nginx/
user www www;
worker_processes 2;
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid logs/nginx.pid;
events {
use epoll;
worker_connections 2048;
}
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 65;
# gzip压缩功能设置
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 6;
gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
gzip_vary on;
# http_proxy 设置
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 75;
proxy_send_timeout 75;
proxy_read_timeout 75;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_temp_path /usr/local/nginx/proxy_temp 1 2;
# 设定负载均衡后台服务器列表
upstream backend {
#ip_hash;
server 192.168.10.100:8080 max_fails=2 fail_timeout=30s ;
server 192.168.10.101:8080 max_fails=2 fail_timeout=30s ;
}
# 很重要的虚拟主机配置
server {
listen 80;
server_name itoatest.example.com;
root /apps/oaapp;
charset utf-8;
access_log logs/host.access.log main;
#对 / 所有做负载均衡+反向代理
location / {
root /apps/oaapp;
index index.jsp index.html index.htm;
proxy_pass http://backend;
proxy_redirect off;
# 后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
}
#静态文件,nginx自己处理,不去backend请求tomcat
location ~* /download/ {
root /apps/oa/fs;
}
location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
{
root /apps/oaapp;
expires 7d;
}
location /nginx_status {
stub_status on;
access_log off;
allow 192.168.10.0/24;
deny all;
}
location ~ ^/(WEB-INF)/ {
deny all;
}
#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;
}
}
## 其它虚拟主机,server 指令开始
}
-
全局快
从配置文件开始到events 块之间的内容,主要会影响一些nginx服务器整体的运行的配置指令
user www www; worker_processes 2; #设置的值越大处理的并非量越大 error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; pid logs/nginx.pid;
-
events 快
涉及的指令主要影响nginx服务器与用户的网络连接
events { worker_connections 2048; #支持的最大的连接数 }
-
http 块
-
http全局快
http全局块配置指令包括文件的引入,MIME-TYPE定义,日志自定义,超时时间,单链接请求数上限等
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 65; # gzip压缩功能设置 gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 6; gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml; gzip_vary on; # http_proxy 设置 client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 75; proxy_send_timeout 75; proxy_read_timeout 75; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; proxy_temp_path /usr/local/nginx/proxy_temp 1 2;
-
server块
-
全局server
最常见的配置就是本虚拟主机的监听配置和本虚拟机的名称或IP配置
listen 80; server_name itoatest.example.com; root /apps/oaapp; charset utf-8; access_log logs/host.access.log main;
-
location 块
一个server 块可以包含多个location 块
#对 / 所有做负载均衡+反向代理 location / { root /apps/oaapp; index index.jsp index.html index.htm; proxy_pass http://backend; proxy_redirect off; # 后端的Web服务器可以通过X-Forwarded-For获取用户真实IP proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; } #静态文件,nginx自己处理,不去backend请求tomcat location ~* /download/ { root /apps/oa/fs; } location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ { root /apps/oaapp; expires 7d; } location /nginx_status { stub_status on; access_log off; allow 192.168.10.0/24; deny all; } location ~ ^/(WEB-INF)/ { deny all; } #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; }
-
-