Http功能模块指定(nginx.conf配置):
alias file-path|directory-path 将所有的访问路径统一改为指定的路径名称
keepalive_timeout 75:客户端与服务器连接的超时时间
resover_timeout 5s:解析文件的超时时间(默认30s,配置里没有可以加)
服务监听的端口和域名(可以多个 使用空格隔开)
location: /处理所有请求
负载均衡:此模块为后端的服务器提供简单的负载均衡(轮询和连接ip)
upstream:负载均衡池 weight:权重 默认为1 fail_timeout:连接超时时间 max_fails:多少次失败服务挂掉
allow:允许访问的地址 deny:拒绝访问的地址
Nginx服务开启但是无法访问nginx页面:
原因:centos从7开始默认用的是firewalld,这个是基于iptables的,虽然有iptables的核心,但是iptables的服务是没安装的。所以你只要停止firewalld服务即可:
firewall-cmd --state #查看防火墙的运行状态
如果你想启用iptables的话,得先安装该服务:yum install iptables-services
检查指定端口是否处于监听状态:netstat -lnt |grep 80
getenforce :查看iptables状态,是否为关闭,以下为关闭状 Disabled
iptables -L:查看防火墙的运行状态 可以看到有很多规则在运行,说明这个时候iptables是运行状态
service iptables status:查看iptables的状态 service firewalld status:查看firewalld的状态
---------------------------------------firewalld防火墙----------------------------------
systemctl status firewalld:查看firewall服务状态
firewall-cmd --state:查看firewall的状态
service firewalld start:开启防火墙
service firewalld restart:重启防火墙
service firewalld stop:关闭防火墙
firewall-cmd --query-port=8080/tcp:查询端口是否开放
firewall-cmd --permanent --add-port=80/tcp:开放80端口
firewall-cmd --permanent --remove-port=8080/tcp 移除端口
firewall-cmd --reload:重启防火墙(修改配置后需重启)
---------------------------------------iptables防火墙----------------------------------
service iptables status:查看防火墙状态
service iptables stop :停止防火墙
service iptables start :启动防火墙
service iptables restart :重启防火墙
chkconfig iptables off :永久关闭防火墙
service iptables restart:修改配置后重启防火墙
------------------利用nginx + tomcat建立集群--------------------------------------
我们这里首先建立三台tomcat端口分别是8081、8082、8083,当有请求过来,其中一台tomcat挂了不影响使用,实现高可用。
但是期间出了些问题:启动tomcat失败(tail -f catalina.out 一直处于阻塞状态)
1、通过./catalina.sh run 输入catalina.sh 下面附属很多后缀命令往下拼即可
2、查看netstat -apt 目前端口及对应pid的占用情况
3、catalina.sh stop 停止tomcat服务 catalina.sh start 开启tomcat服务(类似以我们到bin目录下执行startup.sh)
我catalina.sh start 发信tomcat一直处于阻塞状态???
于是我把该进程杀死,在重新看了一下端口都是ok的
我再次启动tomcat,查看catalina.out日志,ok,就是他妈久了点
为什么会花这么长时间?通过日志发现此次耗时284s,时间主要花在实例化 SecureRandom 对象上了。
Tomcat 7/8都使用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom类产生安全随机类SecureRandom的实例作为会话ID,这里花去了243秒,也即接近4分钟。
SHA1PRNG算法是基于SHA-1算法实现且保密性较强的伪随机数生成器。
在SHA1PRNG中,有一个种子产生器,它根据配置执行各种操作。
1)如果Java.security.egd 属性或securerandom.source属性指定的是”file:/dev/random”或”file:/dev/urandom”,那么JVM 会使用本地种子产生器NativeSeedGenerator,它会调用super()方法,即调用 SeedGenerator.URLSeedGenerator(/dev/random)方法进行初始化。
2)如果java.security.egd属性或securerandom.source属性指定的是其它已存在的URL,那么会调用SeedGenerator.URLSeedGenerator(url)方法进行初始化。
这就是为什么我们设置值为”file:///dev/urandom”或者值为”file:/./dev/random”都会起作用的原因。
在这个实现中,产生器会评估熵池(entropy pool)中的噪声数量。随机数是从熵池中进行创建的。当读操作时,/dev/random设备会只返回熵池中噪声的随机字节。/dev/random非 常适合那些需要非常高质量随机性的场景,比如一次性的支付或生成密钥的场景。
当熵池为空时,来自/dev/random的读操作将被阻塞,直到熵池收集到足够的环境噪声数据。这么做的目的是成为一个密码安全的伪随机数发生器,熵池要有尽可能大的输出。对于生成高质量的加密密钥或者是需要长期保护的场景,一定要这么做。
那么什么是环境噪声?
随机数产生器会手机来自设备驱动器和其它源的环境噪声数据,并放入熵池中。产生器会评估熵池中的噪声数据的数量。当熵池为空时,这个噪声数据的收集是比较花时间的。这就意味着,Tomcat在生产环境中使用熵池时,会被阻塞较长的时间。
解决
有两种解决办法:
1)在Tomcat环境中解决
可以通过配置JRE使用非阻塞的Entropy Source。
在catalina.sh中加入这么一行:-Djava.security.egd=file:/dev/./urandom 即可。
加入后再启动Tomcat,整个启动耗时下降到Server startup in 2912 ms。
2)在JVM环境中解决
打开$JAVA_PATH/jre/lib/security/java.security这个文件,找到下面的内容:
securerandom.source=file:/dev/urandom
替换成
现在快多了,既然我们tomcat已经能够正常启动后,就要在服务器下安装三台不同端口的tomcat了。操作如下:
1、分别在将安装好的tomcat复制三分到你定义的目录,并重新命名为tomcat8081、tomcat8082、tomcat8083
2、分别改动端口号(都加上自己的端口号以8081为例)
将8005改为8015
将8080改为8081
将8009改为8019
修改完成,修改相关配置(etc/profile)环境变量,使用visul模式复制粘贴y复制 p粘贴完成环境变量的配置
3、环境变量配置还需将catalina_home2等全局元素引入到catalina.sh 中,每个tomcat中添加对应的参数如下:
4、配置完环境变量后,将准备好的3个tomcat删除webapps下面的所有文件夹并创建一个ROOT文件夹,在将自定义的一个jsp或者html准备好
在重新加载配置,进入sbin目录下./nginx -s reload;就此完成,浏览器输入对应ip转发到对应三个tomcat。