博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nginx基本配置与应用
阅读量:7250 次
发布时间:2019-06-29

本文共 5063 字,大约阅读时间需要 16 分钟。

  hot3.png

一、准备

1.1 环境准备

1.2 tomcat多实例

把/etc/profile.d/tomcat.sh中的变量注释了

#export TOMCAT_HOME=/usr/local/tomcat#export CATALINA_HOME=/usr/local/tomcat#export CATALINA_BASE=/usr/local/tomcat#export CATALINA_TMPDIR=/usr/local/tomcat/temp#export TOMCAT_USER=tomcatunset TOMCAT_HOMEunset CATALINA_HOMEunset CATALINA_BASEunset CATALINA_TMPDIR

复制tomcat目录

cd /opt/tomcatcp -a apache-tomcat-8.5.16 tomcat8180cp -a apache-tomcat-8.5.16 tomcat8280cp -a apache-tomcat-8.5.16 tomcat8380

修改配置

# 创建部署目录mkdir -p /data/webappschown -R tomcat:tomcat /data/webapps# 修改配置,通过脚本修改如下内容# 行号  替换前                 替换后# 22    8005              =>  8105# 69    8080              =>  8180# 116   8009              =>  8109# 148   appBase="webapps" =>  appBase="/data/webapps"# 执行脚本a.shsh a.sh# 查看修改后的不同diff /opt/tomcat/apache-tomcat-8.5.16/conf/server.xml /opt/tomcat/tomcat8180/conf/server.xml

a.sh

#!/bin/shfor i in {1..3}do  file=/opt/tomcat/tomcat8"$i"80/conf/server.xml  sed -i '22s/8005/8'"$i"'05/' $file  sed -i '69s/8080/8'"$i"'80/' $file  sed -i '116s/8009/8'"$i"'09/' $file  #sed -i '148s#appBase=".*"#appBase="/data/webapps"#' $filedone

启动多实例

# 以普通用户运行tomcat# for i in {1..3};do /opt/tomcat/tomcat8"$i"80/bin/daemon.sh start;donefor i in {1..3};do /opt/tomcat/tomcat8"$i"80/bin/startup.sh;donenetstat -tunlp | grep 80# 关闭for i in {1..3};do /opt/tomcat/tomcat8"$i"80/bin/shutdown.sh;done

1.3 配置hosts

# 查看服务器ipifconfig# 修改hostsC:\Windows\System32\drivers\etc192.168.5.210 test.com192.168.5.210 beijing.test.com192.168.5.210 shanghai.test.com

二、负载均衡

2.2 流程

2.2 nginx配置

/etc/nginx.conf

/usr/local/nginx/conf/nginx.conf

worker_processes  1;events {    worker_connections  1024;}# http最外层模块http {	# 全局变量参数    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    keepalive_timeout  65;	upstream web_pool {		server 127.0.0.1:8180 weight=1;		server 127.0.0.1:8280 weight=1;		server 127.0.0.1:8380 weight=2;	}	# server相当于虚拟站点    server {        listen       80;        server_name  localhost;        location / {            proxy_pass  http://web_pool;            index  index.html index.htm;        }    }}

解析

http:根元素upstream:反向代理的域server:虚拟站点location # 请求的一个节点

location参数

root                         # 站点根路径index                        # 首页proxy_pass                   # 代理服务proxy_redirect off;          # 是否允许重写向proxy_set_header Host $host; # 传header参数至后台端服务proxy_set_header X-Forwarded-For $remote_addr;proxy_connect_timeout 90;    # 连接代理服务超时时间proxy_send_timeout 90;       # 请求改善最大时间proxy_read_timeout 90;       # 读取最大时间

upstream参数

service         # 反向服务地址加端口weight          # 权重 max_fails       # 失败多少次后认为主机已经挂掉,踢出fail_timeout    # 踢出后重新探测时间backup          # 备用服务max_conns       # 允许最大连接数slow_start      # 当节点恢复,不立即加入 max_fails注重用户体验好就要配置低server 127.0.0.1:8180 fail_timeout=5s slow_start=10s;

2.3 负载算法

ll+weight:根据权重轮询

ip_hash:hash(client_ip)%2=index,解决session一致性

url_hash:hash(url)%2=index,资源缓存服务

least_conn:最少连接

least_time:请求时间越少,权重越高

三、应用实战

在修改nginx.conf配置文件后

# 验证配置是否正确nginx -t# 平滑启动nginx -s reload

3.1 动静分离

nginx.conf

worker_processes  1;events {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    keepalive_timeout  65;	upstream web_pool {		server 127.0.0.1:8180 weight=1;		server 127.0.0.1:8280 weight=1;	}		upstream static_resource {		server 127.0.0.1:8380;	}    server {        listen       80;        server_name  localhost;        # 动态服务        location / {            proxy_pass  http://web_pool;            index  index.html index.htm;        }        # 静态服务        location ~* \.(gif|css|png|jpg|js|swf)(.*) {			proxy_pass http://static_resource;        }    }}

tomcat内容

基中index.html

cat /opt/tomcat/tomcat8180/webapps/ROOT/index.htmlindex

Hello 8180

cat /opt/tomcat/tomcat8280/webapps/ROOT/index.htmlindex

Hello 8280

浏览器访问test.com, Hello 8180与Hello 8280循环出现

3.2 防盗链

原理就是根据Referer防盗链

nginx.conf

worker_processes  1;events {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    keepalive_timeout  65;	upstream web_pool {		server 127.0.0.1:8180 weight=1;		server 127.0.0.1:8280 weight=1;	}		upstream static_resource {		server 127.0.0.1:8380;	}    server {        listen       80;        server_name  localhost;        # 动态服务        location / {            proxy_pass  http://web_pool;            index  index.html index.htm;        }        # 静态服务        location ~* \.(gif|css|png|jpg|js|swf)(.*) {			# 防盗链设置			valid_referers none blocked *.test.com;			if ($invalid_referer) {				rewrite ^/ http://7xkmkl.com1.z0.glb.clouddn.com/404.jpg;			}			proxy_pass http://static_resource;        }    }}

用IP访问:重新打开浏览器或Chrome用隐身模式打开

3.3 城市静态站点实现

server {	listen 80;	server_name *.test.com;	root /data/www/$host;	access_log logs/$host.access.log;	location / {		index index.html;	}}

静态站点目录如下

index.html

cat /data/www/beijing.test.com/index.html beijingcat /data/www/shanghai.test.com/index.html shanghai

流量器访问beijing.test.com shanghai.test.com

转载于:https://my.oschina.net/yysue/blog/1627538

你可能感兴趣的文章
数据库巡检项
查看>>
通过阿里云APP,可以进行ECS,RDS 等实例的管理
查看>>
HBase-Region太多的问题简单总结
查看>>
说说我为什么看好Spring Cloud Alibaba
查看>>
STM32学习笔记(五)——通用定时器计数延时
查看>>
Android selector shape 无效问题
查看>>
Data Lake Analytics: 使用DataWorks来调度DLA任务
查看>>
zabbix配置web监控实现网页监控
查看>>
Postgresql lock锁等待检查
查看>>
codeforces1141D题解(暴力+贪心)
查看>>
Java Spring Boot 2.0实战MyBatis连接池阿里Druid与SQL性能监控
查看>>
信用算力基于 RocketMQ 实现金融级数据服务的实践
查看>>
基于oauth 2.0 实现第三方开放平台
查看>>
kubernetes1.4 基础篇:Learn Kubernetes 1.4 by 6 steps(1):概要
查看>>
百万下载量的 Android 应用后台收集用户信息
查看>>
SQL Server 多表数据增量获取和发布 1
查看>>
C3P0连接池
查看>>
这 25 个开源机器学习项目,一般人我不告诉 Ta
查看>>
【WePY小程序框架实战四】-使用async&await异步请求数据
查看>>
iOS UIImageView(图片)
查看>>