【Day14】Nginx实战训练营
54、Nginx 架构 - tomcat
- Tomcat 本身就是一个 web 服务器,可以处理静态文件的请求,但处理能力没有 Nginx 强,所以需要做一个动静分离
在本架构中,Nginx 直接代理 Tomcat - Tomcat 安装略,参考:https://blog.youkuaiyun.com/arsenal4life/article/details/102731894
- 配置文件示例:
server
{
listen 80;
server_name www.1.com;
location ~* "\.(jpg|png|jepg|js|css|xml|bmp|swf|gif|html)$"
{
root /data/wwwroot/www.1.com/;
access_log off;
expire 7d;
}
location /
{
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
- 说明:
1、首先,把各种静态文件的请求分离出来,单独由 nginx 处理。
2、其他请求直接代理 8080 端口,即 tomcat 服务。 - 资料:
https://coding.net/u/aminglinux/p/nginx/git/blob/master/java/nginx_tomcat.md
55、Nginx 架构 - nginx + keepalived
□ 用户访问的是一个 vip(虚拟IP),两台Nginx 通过 Keepalived 实现高可用
□ 正常情况下,Nginx 主提供服务,Nginx 备并不提供服务,留作备用,当主 down 掉后,Nginx 备会替代主提供服务
□ Nginx 主和备都要配置负载均衡,代理后端的所有 Server
□ 在此架构中,Nginx 和 Keepalived 安装在同一个机器上,也就是说 Nginx 主和 Nginx 备都需要安装 Keepalived 服务
- 参考:
- keepalived:https://blog.youkuaiyun.com/arsenal4life/article/details/102964141
- 负载均衡:https://blog.youkuaiyun.com/arsenal4life/article/details/102984481
56、Nginx 运维规范
□ 安装、升级(yum 安装 or 源码安装、编译参数、安装路径等)
□ 服务管理(启动脚本、重启、重载、启动用户)
- nginx 启动脚本参考:
#!/bin/bash
# chkconfig: - 30 21
# description: http service.
# Source Function Library
. /etc/init.d/functions
# Nginx Settings
NGINX_SBIN="/usr/local/nginx/sbin/nginx"
NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
NGINX_PID="/usr/local/nginx/logs/nginx.pid"
RETVAL=0
prog="Nginx"
start()
{
echo -n $"Starting $prog: "
mkdir -p /dev/shm/nginx_temp
daemon $NGINX_SBIN -c $NGINX_CONF
RETVAL=$?
echo
return $RETVAL
}
stop()
{
echo -n $"Stopping $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -TERM
rm -rf /dev/shm/nginx_temp
RETVAL=$?
echo
return $RETVAL
}
reload()
{
echo -n $"Reloading $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -HUP
RETVAL=$?
echo
return $RETVAL
}
restart()
{
stop
start
}
configtest()
{
$NGINX_SBIN -c $NGINX_CONF -t
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
restart
;;
configtest)
configtest
;;
*)
echo $"Usage: $0 {start|stop|reload|restart|configtest}"
RETVAL=1
esac
exit $RETVAL
- 资料:
https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/etc_init.d_nginx
□ 配置规范
- Log 格式、路径、命名规则和切割策略
- Pid 路径
- 虚拟主机(默认虚拟主机、虚拟主机独立)
- 静态文件日志和过期缓存时间
- 防盗链
□ 更改配置(使用自动化工具更改配置文件)
□ 安全规范
- 后台地址加用户认证
- 可写目录禁止解析 php
- 禁止访问 .bak文件
□ 故障举例
- 一个请求分发到多台服务器https://www.cnblogs.com/kevingrace/p/8185218.html
- 400或414 http://blog.51cto.com/tenderrain/1633586
- 413 https://mp.weixin.qq.com/s/6_e9PJZVrYpUS7ubKkxK8w
- Nginx代理tomcat的https问题 http://blog.lishiming.net/?p=497
http://www.cnblogs.com/interdrp/p/4881785.html - 静态文件更新 https://www.cnblogs.com/sunsweet/p/3338684.html
- 502问题 https://blog.youkuaiyun.com/u010391029/article/details/46884107
- Nginx+tomcat 自定义404 https://my.oschina.net/clyy/blog/822849