一、正向代理
二、反向代理
三、Nginx的作用
1、反向代理
将服务器的地址信息对客户端屏蔽,客户端只需要访问代理服务器即可,代理服务器会将请求转发给底层的真正起作用的应用服务器。但在客户端眼里,服务器只有唯一的一台,就是代理服务器。
- 关键命令:proxy_pass
- 如将 localhost 的80端口 转到 localhost 8080端口
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host:$server_port;
}
}
2、负载均衡
Nginx可以作为负载均衡器,将流量分发到多个后端服务器。权重会影响请求被分发到该服务器的概率,权重越大,被分发请求的概率越大。
upstream myserver {
#请求的 90% 进入到8080服务器
server ip:8080 max_fails=3 fail_timeout=30s weight=9;
#请求的 10% 进入到8081服务器
server ip:8081 max_fails=3 fail_timeout=30s weight=1;
}
server {
listen 80;
server_name ip;
location / {
proxy_pass http://myserver;
}
}
3、HTTP服务器(动静分离)
项目中的静态资源,不会因项目运行而发生变化,所以可以缓存在Nginx本地,加快访问速度。
使用Nginx处理静态页面,Tomcat 处理动态页面
upstream test{
server localhost:8080;
server localhost:8081;
}
server {
listen 80;
server_name localhost;
location / {
root e:/wwwroot;
index index.html;
}
# 所有静态请求都由nginx处理,存放目录为html
location ~ .(gif|jpg|jpeg|png|bmp|swf|css|js)$ {
root e:/wwwroot;
}
# 所有动态请求都转发给tomcat处理
location ~ .(do)$ {
proxy_pass http://test;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root e:/wwwroot;
}
}
4、web服务器
- 关键命令:root
- 当只有静态资源的时候,就可以使用Nginx来做服务器
- 这样如果访问 http://localhost 就会默认访问到 E://www/data目录下面的index.html,如果一个网站只是静态页面的话,那么就可以通过这种方式来实现部署
server {
listen 80;
server_name localhost;
location / {
root e:/www/data;
index index.html;
}
}
Nginx配置
# 定义工作进程数,通常设置为等于CPU核数
worker_processes auto;
# 进程文件
pid /var/run/nginx.pid;
# 工作模式及连接数上限
events {
worker_connections 1024; # 单个后台worker process进程的最大并发链接数
}
# 设置日志路径,级别等
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 /var/log/nginx/access.log main;
# sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,
# 对于普通应用设为 on,如果用来进行下载等应用磁盘 IO 非常重要的应用,可设置为 off,以平衡磁盘 IO 进程,降低系统的 uptime.
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 2;
gzip_types text/plain application/x-javascript text/css application/xml;
# 虚拟主机配置
server {
# 监听端口
listen 80;
# 域名
server_name localhost;
# 默认请求的静态文件前缀
location / {
root html;
index index.html index.htm;
}
# 匹配以.php结尾的请求
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;
}
# 匹配以.html结尾的请求
location ~ /\.ht {
deny all;
}
}
}