Nginx配置文件介绍
Nginx配置文件
- 配置文件所在位置
默认安装Nginx服务器的基础配置文件: /usr/local/nginx/conf/nginx.conf
- 文件结构
(1)全局块
(2)events块
配置影响Nginx服务器允许用户访问的网络连接
(3)HTTP块
-- 嵌套多个server
-- 配置反向代理功能提供负载均衡
(4)server块
-- 配置虚拟主机的相关信息
(5)location块
-- 请求URL过滤,正则匹配
构建反向代理
Nginx只处理静态不处理动态内容,动态内容交给后台Tomcat处理
实现负载均衡
1、轮询
(1)Nginx的配置
#运行服务器的用户组 默认安装为nobody;
#user nobody;
#配置允许生成的worker_processes 一般根据自己服务器的CPU设置
worker_processes 1;
#全局日志的存放路径
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#配置Nginx进行的存放路径
#pid logs/nginx.pid;
events {
#配置运行访问的最大连接数
worker_connections 1024;
}
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;
#设置负载均衡的服务器列表 upstream 可以存在多个
upstream test_server {
#代理服务器的实际访问地址
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server {
listen 80;
#监听地址 test.com 客户端用于访问的域名同样也可以是IP地址
server_name test.com;
root /data/test; # 前端静态工程
location / {
#设置默认页
index index.html;
}
location /testservlet {
#后端的Web服务器获取用户真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# 反向代理地址
proxy_pass http://test_server;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css|html)$ {
expires 2h;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
access_log /data/test/logs/access_log.log;
}
}
--》检查配置文件修改是否正确--》对于常见错误赘述
--》完成
(2)Nginx的启动
Tomcat发布项目部分不赘述--》启动8080端口Tomcat
--》启动8081端口Tomcat
--》上传Nginx静态文件
--》启动Nginx
--》因为test.com并非是真是的域名,因此需要修改本地host文件,地址c:\windows\system32\drivers\etc\,因为WIN10管理员权限原因无法进行修改,在附件中会上传获取管理员权限的注册表,注册后右键文件就会多一个获取管理员权限选项
--》完成
(3)运行说明
访问test.com nginx会将第一次访问代理到8080服务器,再次访问会将访问代理到8081服务器,依次轮询
2、热备
(1)Nginx的配置
#运行服务器的用户组 默认安装为nobody;
#user nobody;
#配置允许生成的worker_processes 一般根据自己服务器的CPU设置
worker_processes 1;
#全局日志的存放路径
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#配置Nginx进行的存放路径
#pid logs/nginx.pid;
events {
#配置运行访问的最大连接数
worker_connections 1024;
}
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;
#设置负载均衡的服务器列表 upstream 可以存在多个
upstream test_server { # 热备模式
#代理服务器的实际访问地址
server 127.0.0.1:8080;
server 127.0.0.1:8081 backup;
}
server {
listen 80;
#监听地址 test.com 客户端用于访问的域名同样也可以是IP地址
server_name test.com;
root /data/test; # 前端静态工程
location / {
#设置默认页
index index.html;
}
location /testservlet {
#后端的Web服务器获取用户真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# 反向代理地址
proxy_pass http://test_server;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css|html)$ {
expires 2h;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
access_log /data/test/logs/access_log.log;
}
}
(2)Nginx的启动
--》检查配置文件修改是否正确
--》重启Nginx
--》完成
(3)运行说明
8080服务器作为主服务器,当8080服务宕机后8081开始工作,用户再次访问,Ngixn会将请求代理到8081服务器
3、权重
(1)Nginx的配置
#运行服务器的用户组 默认安装为nobody;
#user nobody;
#配置允许生成的worker_processes 一般根据自己服务器的CPU设置
worker_processes 1;
#全局日志的存放路径
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#配置Nginx进行的存放路径
#pid logs/nginx.pid;
events {
#配置运行访问的最大连接数
worker_connections 1024;
}
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;
#设置负载均衡的服务器列表 upstream 可以存在多个
upstream test_server { # 权重模式
#代理服务器的实际访问地址
server 127.0.0.1:8080;
server 127.0.0.1:8082 weight=2;
}
server {
listen 80;
#监听地址 test.com 客户端用于访问的域名同样也可以是IP地址
server_name test.com;
root /data/test; # 前端静态工程
location / {
#设置默认页
index index.html;
}
location /testservlet {
#后端的Web服务器获取用户真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# 反向代理地址
proxy_pass http://test_server;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css|html)$ {
expires 2h;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
access_log /data/test/logs/access_log.log;
}
}
(2)Nginx的启动
同上
(3)运行说明
当访问量较大时,Nginx会优先将更多的访问代理到8081服务器
4、IP地址hash
解决Tomcat之间的session共享
(1)Nginx的配置
#运行服务器的用户组 默认安装为nobody;
#user nobody;
#配置允许生成的worker_processes 一般根据自己服务器的CPU设置
worker_processes 1;
#全局日志的存放路径
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#配置Nginx进行的存放路径
#pid logs/nginx.pid;
events {
#配置运行访问的最大连接数
worker_connections 1024;
}
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;
#设置负载均衡的服务器列表 upstream 可以存在多个
upstream test_server {
#ip 地址hash 解决Tomcat之间session共享
ip_hash;
#代理服务器的实际访问地址
server 127.0.0.1:8080;
server 127.0.0.1:8082 weight=2;
}
server {
listen 80;
#监听地址 test.com 客户端用于访问的域名同样也可以是IP地址
server_name test.com;
root /data/test; # 前端静态工程
location / {
#设置默认页
index index.html;
}
location /testservlet {
#后端的Web服务器获取用户真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# 反向代理地址
proxy_pass http://test_server;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css|html)$ {
expires 2h;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
access_log /data/test/logs/access_log.log;
}
}
(2)Nginx的启动
同上
(3)运行说明
ip_hash;会将同意客户端连续的WEB请求分配到同意服务器。除了热备模式外,轮询、权重都存在Tomcat之间session共享的问题,因此轮询、权重模式通常需要解决Tomcat之间session共享的问题。
附件:
链接:https://pan.baidu.com/s/14JKJpFe8xC7sc70FtmcNsw
提取码:ojcz