书接上回,咱们已经对Nginx服务器有了一个大致的概念,而本篇就俩聊一聊Nginx服务器的常用配置。
什么是虚拟主机呢?
虚拟主机:同一台nginx服务器,可以支持多个网站的运行,虚拟主机之间互相独立,有完整功能。
简单的来说,当你输入不同的域名经过同一台Nginx服务器不同的主机配置转发到相应服务,这些多个相应服务器就成为虚拟主机。
一个http配置块下面配置多个server,这要就实现了多个虚拟主机的配置。
http {
# 对应虚拟主机的配置
server{
# 监听端口
listen 80;
# 监听域名
server_name localhost;
# 定位出路径或文件地址
location / {
# 相对路径
root html;
# 默认跳转的首页地址
index index.html index.htm;
}
}
server{
}
}
#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;
上边就是它的模板
日志demo
192.168.1.11 - - [04/Mar/2020:13:03:39 +0800] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36"
我们可以通过下面这个表格来获取它具体的详细信息。
配置这一模块,就需要你有另一个服务器了,我们一般用的都是tomcat服务器。
在我们的server_est配置块下边加油如下配置项即可;
http {
# 对应虚拟主机的配置
server{
# 监听端口
listen 80;
# 监听域名
server_name localhost;
# 定位出路径或文件地址
location / {
# 相对路径
root html;
# 默认跳转的首页地址
index index.html index.htm;
}
}
server_test{
# 监听端口
listen 80;
# 监听域名
server_name my123.com;
# 定位出路径或文件地址
# location / {
# 相对路径
# root my123;
# 默认跳转的首页地址
# index index.html;
# }
location / {
proxy_pass http://127.0.0.1:8080;
}
}
}
可以看到 我们将上一篇的location替换为我们要代理的服务器IP,当客户端用相应的域名访问Nginx服务器是就会转发到我们所配置的ip服务中去。
如果我们想代理多个tomcat服务器我们可以
location ~ /tomcat1/ {
proxy_pass http://127.0.0.1:8080;
}
location ~ /tomcat2/ {
proxy_pass http://127.0.0.1:8081;
}
这样的话 ,当我们在访问域名时再加上tomcat1或2就可以分别访问到不同的服务器啦。
随着现在网络技术的进步与发展,面对数量巨大的访问往往对与一台服务器来说是绝对处理不了的,所以就出现分布式架构。所谓分布式就是,将原本处理请求的B服务器增加到B1、B2、B3或者更多。让三台服务器分摊压力。而分摊压力的这个操作就是负载均衡。最常见的负载均衡方法就是轮循,通俗来说就是让第一个请求打到服务器B1上、第二个请求打到服务器B2上、第三个请求打到服务器B3上,然后一直循环下去。但是服务器之间的硬件属性又不可能完全相同,这就导致他们处理请求的能力与速度不同,所以一般我们呢还会用到加权轮循的方式。具体的配置如下:
upstream myserver{
# server列表的地址和端口
server 192.168.1.20:8080 weight=2;
server 192.168.1.20:8081 weight=1;
}
根据我们后面配置的权重值,请求会均匀的打到相应服务器,但是我们在请求访问时,不可能只请求一次。一般都是先登录然后发送二次请求来办理业务,但这个时候登录的请求被B1处理,但是办理业务的请求却打到了B2上,这样显然是不合适的,所以我们还需要配置一个ip_hash;关键字来使相同的ip打到同一个服务器上。
upstream myserver{
# server列表的地址和端口
server 192.168.1.20:8080 weight=2;
server 192.168.1.20:8081 weight=1;
ip_hash;
}
这里所说的动静分离可不是说把动态资源和静态资源进行物理分离,而是把请求分为动态请求如jsp等等和静态请求如图片等等进行分离。这样做的优势在于让最终的服务器可以全力处理动态请求。
直接上配置:
# 动态资源配置
location ~ .*.jsp$ {
proxy_pass http://myserver;
}
# 静态资源配置
location ~ .*\.(gif|jpg|png|css)$ {
root /usr/local/nginx/image;
# 在浏览器端使用缓存 设置过期时间
expires 3d;
}
对url的规范化处理,域名更换时的新旧跳转,一些额外的参数调整等等
server{
listen 80;
server_name my123.com;
rewrite ^/(.*) http://www.my123.com/$1 permanent;
}
关于Nginx配置的相关内容暂时就分享这么多,其实是作者本人水准是在有限,只是把相关知识作为记录,然后分享给大家。希望可以帮助到你。
因篇幅问题不能全部显示,请点此查看更多更全内容