Nginx 网站部署
Posted bingo fighting
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx 网站部署相关的知识,希望对你有一定的参考价值。
网站打包: 项目开发完成以后,使用Maven的package命令对模块打包,
- 网站部署:网站开发并打包完成以后,需要部署到服务器上运行。网站部署方式是使用nginx作为反向代理服务器,将网络请求转发为Web服务器Tomcat,通过Nginx的access log记录用户访问行为。
- Nginx默认配置,Nginx提供了一个默认的配置,实现了基本的功能,在进行配置之前,首先通过Nginx默认的配置文件了解Nginx配置文件的基本结构。
- 全局块:配置nginx全局指令。包括:nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,允许生成worker process的数量等。
- events块:配置nginx服务器的网络连接。主要有:每个进程的最大连接数;选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
- http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置,如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
- server块:配置虚拟主机的相关参数,一个http中可以有多个server。
- location块:配置请求的路由,以及各种页面的处理情况。
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } } |
- Nginx日志格式:以Nginx的access log(访问日志)作为实时分析的数据来源
变量 | 说明 |
$remote_addr | 记录访问网站的客户端地址 |
$remote_user | 远程客户端用户名 |
$time_local | 记录访问时间与时区 |
$request | 用户的http请求起始行信息 |
$status | http状态码,记录请求返回的状态码 |
$body_bytes_sent | 服务器发送给客户端的响应body字节数 |
$http_referer | 记录此次请求是从哪个连接访问过来的 |
$http_user_agent | 记录客户端访问信息 |
$http_x_forwarded_for | 当前端有代理服务器时,设置web节点记录客户端地址的配置 |
Nginx提供了默认的日志格式的配置
log_format main '$remote_addr - $remote_user [$time_local]"$request" ' '''$status $body_bytes_sent "$http_referer" ' "$http_user_agent" "$http_x_forwarded_for"'; |
Nginx网站的默认日志的主要特点是网站日志格式比较紧凑,节省存储空间,但是相对于JSON的数据格式,可读性相对较差,根据需要也可以将日志配置为JSON格式。
log_format main_json '{"@timestamp":"$time_iso8601","host":"$server_addr","clientip":"$remote_addr",' '"remote_user":"$remote_user","request":"$request","http_user_agent":"$http_user_agent",' '"size":"$body_bytes_sent","responsetime":"$request_time",' '"upstreamtime":"$upstream_response_time",'"upstreamhost":"$upstream_addr",' '"http_host":"$host","url":"$uri","domain":"$host",'"xff":"$http_x_forwarded_for",' '"referer":"$http_referer","status":"$status"}'; |
- 配置Tomcat集群,使用upstream配置Web服务器集群,frame-tomcat为网站模块的服务器集群
upstream frame-tomcat { server hadoop1:8180 weight=1; server hadoop2:8189 weight=2; } |
- 配置网站server。
- server_name:网站模块的域名
- location:配置转发路由,将接收到的网站用户请求转发给网站模块的tomcat集群。
server { listen 80; server_name frame.site; location / { proxy_pass http://frame-tomcat; } } |
- 验证Nginx配置,运行Nginx安装目录的sbin目录下nginx -t命令验证Nginx配置是否正确。如果配置出错,可根据错误提示信息对配置进行修改。
[root@master ~]# $NGINX_HOME/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful |
- 系统部署
Nginx配置完成以后,在服务器上部署网站模块和日志模块,首先将已经打包好的文件上传到服务器指定的目录,运行java -jar 命令启动Web服务,然后再启动Nginx。主要命令如下:
- 上传项目jar包到服务器指定位置如:/opt/jar目录下,使用cd命令切换到部署目录
[root@master ~]# cd /opt/jar |
- 使用java -jar命令启动日志服务,xxx.jar为日志模块的包。
[root@master jar]# java -jar xxx.jar |
- 启动nginx,执行nginx安装目录的sbin目录下的nginx命令
[root@master jar]# $NGINX_HOME/sbin/nginx |
Windows操作系统的hosts配置文件一般在
C:\\Windows\\System32\\drivers\\etc\\目录下。
- 配置网站hosts,例如部署网站模块和日志模块的服务器IP地址为192.168.68.129,配置虚拟的域名指向这个IP地址。
192.168.68.129 frame.site |
- 查看Nginx的access log日志,使用tail -f命令,看是否正常生成网站日志。
[root@master ~]# tail -f $NGINX_HOME/logs/frame/access.log |
以上是关于Nginx 网站部署的主要内容,如果未能解决你的问题,请参考以下文章