Nginx 网站部署

Posted bingo fighting

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx 网站部署相关的知识,希望对你有一定的参考价值。

网站打包: 项目开发完成以后,使用Maven的package命令对模块打包,

  1. 网站部署:网站开发并打包完成以后,需要部署到服务器上运行。网站部署方式是使用nginx作为反向代理服务器,将网络请求转发为Web服务器Tomcat,通过Nginx的access log记录用户访问行为。
  2. 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;

        }

    }

}

  1. 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"}';

  1. 配置Tomcat集群,使用upstream配置Web服务器集群,frame-tomcat为网站模块的服务器集群

upstream frame-tomcat {

        server hadoop1:8180 weight=1;

server hadoop2:8189 weight=2;

    }

  1. 配置网站server。
  • server_name:网站模块的域名
  • location:配置转发路由,将接收到的网站用户请求转发给网站模块的tomcat集群。

server {

        listen       80;

        server_name  frame.site;

        location / {

          proxy_pass http://frame-tomcat;

        }

     }

  1. 验证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

  1. 系统部署

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\\目录下。

  1. 配置网站hosts,例如部署网站模块和日志模块的服务器IP地址为192.168.68.129,配置虚拟的域名指向这个IP地址。

192.168.68.129 frame.site

  1. 查看Nginx的access log日志,使用tail -f命令,看是否正常生成网站日志。

[root@master ~]# tail -f $NGINX_HOME/logs/frame/access.log

以上是关于Nginx 网站部署的主要内容,如果未能解决你的问题,请参考以下文章

nginx部署多个网站

Nginx部署静态网站

部署Nginx网站服务实现访问状态统计以及访问控制功能

使用nginx部署网站

部署社交网站(SVN+PHP+NGINX+MYSQL+MFS)

Nginx从入门到精通Nginx静态网站部署