什么是Nginx?
Nginx是轻量级web服务器,高性能的HTTP和反向代理服务器,也是IMAP、POP3、SMTP代理服务器
基本功能?
处理静态文件,索引文件以及自动索引反向代理加速负载均衡和容错动静分离
有多个版本,根据自己系统的需要选择安装!!!
安装可参考 =》 Nginx安装
三、配置nginx安装目录如下:
[root@VM-16-12-centos server]# cd nginx/ [root@VM-16-12-centos nginx]# ls client_body_temp fastcgi_temp logs proxy_temp_dir sbin uwsgi_temp version.pl conf html proxy_cache_dir rpm.pl scgi_temp version_check.pl waf
主要配置文件在conf目录下:
[root@VM-16-12-centos nginx]# cd conf/ [root@VM-16-12-centos conf]# ls data enable-php-56.conf enable-php-80.conf fastcgi_params.default myconf.conf scgi_params enable-php-00.conf enable-php-70.conf enable-php-81.conf koi-utf nginx.conf scgi_params.default enable-php-52.conf enable-php-71.conf enable-php.conf koi-win nginx.conf.default uwsgi_params enable-php-53.conf enable-php-72.conf fastcgi.conf luawaf.conf pathinfo.conf uwsgi_params.default enable-php-54.conf enable-php-73.conf fastcgi.conf.default mime.types proxy.conf vhost enable-php-55.conf enable-php-74.conf fastcgi_params mime.types.default rewrite win-utf
核心配置文件nginx.conf内容如下:
#用户
user www www;
#并发能力,worker_processes的值越大,nginx的并发能力越强,根据具体服务器配置
worker_processes auto;
#错误日志的存放位置
error_log /www/wwwlogs/nginx_error.log crit;
#nginx的运行表示
pid /www/server/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;
#以上统称全局块
#event块
events
{
use epoll;
#worker_connections数值越大,nginx的并发能力越强
worker_connections 51200;
multi_accept on;
}
#http块
http
{
include mime.types;
#include luawaf.conf;
include proxy.conf;
default_type application/octet-stream;
server_names_hash_bucket_size 512;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 50m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6].";
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;
server_tokens off;
access_log off;
server
#监听端口
listen 3370;
#nginx接收请求的ip
server_name localhost;
#开启自动定位
autoindex on;
#位置
location / {
#设置根目录
root /opt/local; #文件目录
}
}
#引入外部的配置文件=>/mine.types中存放着大量的媒体类型
include /www/server/panel/vhost/nginx/*.conf;
}
四、正向代理
正向代理服务由客户端设立客户端了解服务器和目标服务器是是谁帮助实现突破访问权限,提高访问速度,对目标服务器隐藏客户端的IP地址
五、反向代理反向代理服务器是配置在服务端的客户端是不知道访问到底是那一台服务器可以做到负载均衡;隐藏服务器真正的IP地址
【实战】
实现效果:通过Nginx将我们的请求转发到tomcat服务器上,(下面使用docker演示)
操作:
启动一个tomcat容器,在容器内部的webapps目录下,新建ROOT目录,在该目录下新建index.html文件,里面随意写点内容,我这里Tomcat容器的端口映射是外部服务器器3351端口映射容器的8080端口
index.html
I am root of tomcat-01
访问Tomcat容器测试,可以看到我们是可以正常访问到ROOT目录下index.html的
配置Nginx的代理服务
打开Nginx安装目录下的核心配置文件:nginx.conf
在文件的http块里增加一个server块,内容如下:
server{
listen 80;
server_name localhost;
location / {
proxy_pass http://www.[你的域名].top:3351 ;
}
}
上面的意思是让Nginx监听80端口,有接收到请求就转发到http://www.[你的域名].top:3351上。
最后保存修改后的配置文件
重启Nginx
测试,访问服务器的80端口
可以看到,在访问80端口时,Nginx已经帮我们把请求转发到了目标服务器,并能访问到目标服务器的内容.
撒花!!!利用Nginx做反向代理实践完成了
- 轮询: 将客户端发起的请求,平均的分配给每一台服务器。权重: 会将客户端的请求,根据服务器的权重值不同,分配不同的数量。IP_hash: 基于发起请求的客户端的IP地址不同,他始终会将请求发送给指定的服务器上。
【实战】
实现效果:开启两个tomcat服务器,nginx代理实现均衡访问两个tomcat服务器
操作:
开启两个Tomcat容器,各自在容器的根目录新建ROOT目录,然后在该目录下新建index.html,随意写点内容
保证两个Tomcat容器能正常访问
配置Nginx的代理服务,打开核心配置文件Nginx.conf,添加以下配置,保存重启Nginx
#默认使用轮询策略
upstream nodeserver{
server 150.158.16.123:3351 ;
server 150.158.16.123:3353 ;
}
server{
listen 80;
server_name 150.158.16.123;
location / {
proxy_pass http://nodeserver/;
}
}
测试,可以看到默认使用轮询策略,两个Tomcat容器会依次轮流访问到
再次修改配置文件,给服务器增加一个权重,修改配置如下,保存重启
#使用权重策略,weight越大,权重越大
upstream nodeserver{
server 150.158.16.123:3351 weight=2;
server 150.158.16.123:3353 weight=1;
}
server{
listen 80;
server_name 150.158.16.123;
location / {
proxy_pass http://nodeserver/;
}
}
测试,可以看到,按照配置文件的权重,Nginx会将请求按权重分配给不同服务器
撒花!!!负载均衡策略实践完毕!!!!
定义:动静分离是一种策略,将静态资源部署在Nginx上,后台项目部署到应用服务器上,根据一定的规则静态资源的请求全部请求Nginx服务器,加快响应速度,实现动静分离的效果
【实战】
实现效果: 直接用nginx映射服务器上的静态资源
操作:
准备静态资源,这里把资源放到服务器上的/opt/local目录下
修改Nginx的配置文件,在文件的http块里增加一个server块,内容如下:
server{
#这里我用3370端口监听
listen 3370;
server_name localhost;
autoindex on;
location / {
root /opt/local; #静态资源的文件目录
}
}
保存配置,重启nginx
测试,访问服务器的3370端口,可以看到我们的文件
在地址端口的后面增加文件名称,可以直接获取,如我访问上面test.html,可以这样
这样用nginx做静态资源代理就好了
【踩坑提示】
在访问静态资源时你能遇到下面这个提示:
莫慌,在server块里加上autoindex on就可以解决问题了
本次学习分享到这,本次学习参考B站《千峰Java的Nginx教程》=>【千锋】Nginx教程全面讲解(Nginx快速上手)_哔哩哔哩_bilibili



