nginx配置文件riqi|nginx能自动创建log文件吗

① 获取得到nginx的当前时间,为什么比电脑的时间多个2小时啊怎么解决啊

系统时间不是当前时间:

系统时间不是当前时间。网上说用命令ntpdate pool.ntp.org校准,发现校准后date读取的时间和标准时间相差16个小时。后来找到了靠谱的校准方法,特记录一下。

yum install -y ntpdatentpdate ntp.api.bz或者ntpdate -u ntp.api.bz-u参数说明:指定使用无特权的端口发送数据包。 当在一个对特权端口的输入流量进行阻拦的防火墙后是很有益的, 并希望在防火墙之外和主机同步。防火墙是一个系统或者计算机,它控制从外网对专用网的访问。NTP服务器-推(转自己网络,但亲测可用) 210. 72 .145.44 (网上说是国家授时中心服务器,但是实际测试不可用)date命令的常见参数的用法:date -s "2014-12-25 15:15:15"date +%Y 以四位数字格式打印年份 eg: 2018date +%y 以二位数字格式打印年份 eg: 18date +%m 月份date +%d 日期date +%H 小时date +%M 分钟date +%S 秒date +%w 星期,如果结果显示0,则表示周日注意:date后面要有空格字母区分大小写date -d "-1 day" +%d 前一天的日期date -d "-1 hour" +%H 前一小时date -d "-1 min" +%M 前一分钟centos查看设置系统时区cat /etc/sysconfig/clockcat /etc/ chaodiquan.com /clock

hwclock 查看系统bios时间查看硬件时钟用命令:hwclock –show 或者 hwclock -rhwclock -w //将系统时钟写入硬件时钟硬件时钟与系统时钟同步:# hwclock –hctosys或者# clock –hctosys注意:date命令只操作系统时间,hwclock操作硬件时钟,因此在date 修改时间后 最好用hwclock 同步一下,以免系统非正常关机造成时间不同步。clock和hwlock命令等效。上面的hwclock都可以替换为clock。

② 怎么修改nginx的access.log的时间格式

lua 方法http {include /etc/nginx/mime.types;default_type application/octet-stream;log_format main '"$remote_addr" "$fmt_localtime" "$request_id" "$requ'"$status" "$body_bytes_sent" "$request_length" "$htt'"$http_user_agent" "$http_x_forwarded_for" "$http_ho#access_log /data/log/nginx/access.log main;map $host $fmt_localtime {default '';}log_by_lua_block {ngx.var.fmt_localtime = ngx.localtime();}…}1) 首先我们自定了一个nginx 变量 $fmt_localtime,因为在http context不能够使用 set $variable。所以我们采用map的方式如下map $host $fmt_localtime {default '';}2) 然后我们用 log_by_lua_block 设置 ngx.fmt_localtime的时间3) 设置日志格式 log_format

③ 怎么修改nginx的access.log的时间格式

设置log_format参数就行了。log_format日志格式1、语法:log_formatname(格式名字)格式样式(即想要得到什么样的日志内容)示例:

④ 如何 配置 nginx max-age

expires 指令可以控制 HTTP 应答中的“Expires ”和“ Cache-Control ”的头标(起到控制页面缓存的作用)语法:expires [time|epoch|max|pff]默认值:offexpires指令控制HTTP应答中的“Expires”和“Cache-Control”Header头部信息,启动控制页面缓存的作用time:可以使用正数或负数。“Expires”头标的值将通过当前系统时间加上设定time值来设定。time值还控制"Cache-Control"的值:负数表示no-cache正数或零表示max-age=time epoch:指定“Expires”的值为 1January,1970,00:00:01 GMTmax:指定“Expires”的值为31December2037 23:59:59GMT,"Cache-Control"的值为10年。-1:指定“Expires”的值为当前服务器时间-1s,即永远过期。off:不修改“Expires”和"Cache-Control"的值expires使用了特定的时间,并且要求服务器和客户端的是中严格同步。而Cache-Control是用max-age指令指定组件被缓存多久。对于不支持http1.1的浏览器,还是需要expires来控制。所以最好能指定两个响应头。但HTTP规范规定max-age指令将重写expires头。如果不想让代理或浏览器缓存,加no-cache参数或private参数:# expires 1d;add_header Cache-Control no-cache;add_header Cache-Control private;这样浏览器F5刷新时,返回的依然是200,而不是304.记录一个nginx控制缓存的例子: expires 1d; add_header Cache-Control no-cache; add_header Cache-Control private; if ( !-e $request_filename) { rewrite ^(.*) http://test.zhaopin.com/index.html break; # add_header Cache-Control no-cache; # add_header Cache-Control private;当我将add_header写在rewrite之后时,发现add_header竟然不起作用了。。是因为写进了if里面..apache的mod_expires模块使得在使用expires头时能像max-age那样以相对的方式设置日期,通过ExpiresDefault指令完成。例如:图片等过期时间为请求开始的10年之后<FileMatch"\.(gif|jpg|js|css)$">ExpiresDefault "access plus 10years"</FileMatch>它像响应中发送Expires头和Cache-Control max-age头。expires|etag控制页面缓存区别expires:像上面文章提到的:expires指令控制HTTP应答中的“Expires”和“Cache-Control”Header头部信息,启动控制页面缓存的作用time:可以使用正数或负数。“Expires”头标的值将通过当前系统时间加上设定time值来设定。time值还控制"Cache-Control"的值:负数表示no-cache正数或零表示max-age=time epoch:指定“Expires”的值为 1January,1970,00:00:01 GMTmax:指定“Expires”的值为31December203723:59:59GMT,"Cache-Control"的值为10年。-1:指定“Expires”的值为当前服务器时间-1s,即永远过期。off:不修改“Expires”和"Cache-Control"的值expires使用了特定的时间,并且要求服务器和客户端的是中严格同步。而Cache-Control是用max-age指令指定组件被缓存多久。对于不支持http1.1的浏览器,还是需要expires来控制。所以最好能指定两个响应头。但HTTP规范规定max-age指令将重写expires头。一般用于页面变化不是很快的时候,如果缓存过期了,浏览器在重用它之前会首先确认他是否有效,就是一个“条件GET请求”,如果有效,返回304状态码。expires通过Last-Modified响应头来确定。 这时返回的状态码是304,而在请求中比第一次多了If-Modified-Since头,和原始服务器中的Last-Modified制作比较,所以实现浏览器缓存并判断是否过期。简单的说,Last-Modified 与If-Modified-Since 都是用于记录页面最后修改时间的 HTTP 头信息,只是Last-Modified 是由服务器往客户端发送的 HTTP 头,而 If-Modified-Since则是由客户端往服务器发送的头,可以看到,再次请求本地存在的 cache 页面时,客户端会通过 If-Modified-Since头将先前服务器端发过来的 Last-Modified最后修改时间戳发送回去,这是为了让服务器端进行验证,通过这个时间戳判断客户端的页面是否是最新的,如果不是最新的,则返回新的内容,如果是最新的,则返回304告诉客户端其本地cache的页面是最新的,于是客户端就可以直接从本地加载页面了,这样在网络上传输的数据就会大大减少,同时也减轻了服务器的负担。如果不想让代理或浏览器缓存,加no-cache参数或private参数:# expires 1d;add_header Cache-Control no-cache;add_header Cache-Control private;etag:实体标签,是用来确认web服务器和浏览器缓存有效性的一种机制。原始服务器使用ETag响应头来指定组件的ETag浏览器通过If-None-Match头将ETag传回原始服务器。如果匹配,返回304依然返回的状态码是304,而在请求中比第一次多了If-None-Match头。所以实现浏览器缓存。如果这个值对不上,则缓存过期。ETags和If-None-Match是一种常用的判断资源是否改变的方法。类似于Last-Modified和HTTP-If-Modified-Since。但是有所不同的是Last-Modified和HTTP-If-Modified-Since只判断资源的最后修改时间,而ETags和If-None-Match可以是资源任何的任何属性。ETags和If-None-Match的工作原理是在HTTPResponse中添加ETags信息。当客户端再次请求该资源时,将在HTTPRequest中加入If-None-Match信息(ETags的值)。如果服务器验证资源的ETags没有改变(该资源没有改变),将返回一个304状态;否则,服务器将返回200状态,并返回该资源和新的ETags。IIS上的ETag格式需要修改。

⑤ Nginx-nginx可以通过URL缓存动态内容,并设置过期时间吗

nginx的缓存服务proxy_cache不能清除指定的URL缓存,只能设置URL过期时间,要清除指定URL可以用nginx第三方模块ngx_cache_purge。nginx安装时需要将ngx_cache_purege加载进去。

⑥ nginx怎么修改php.ini的时区

如果使用的是独立的服务器,有权限修改配置文件,设置时区就可以通过修改php.ini中的date.timezone属性完成。我们可以将这个属性的值设置为“Asia/Shang”、“Asia/Chongqing”、“Etc/GMT-8”或PRC等中的一个,再在PHP脚本中获取的当前时间就是北京时间。修改PHP的配置文件如下所示:date.timezone = Etc/GMT-8 //在配置文件中设置默认时区为东8区(北京时间)如果还有不明白的话,你可以在后盾人看看视频找找答案,有空多看看时间长了,慢慢就明白了,希望能帮到你,给个采纳吧谢谢(●°u°●)​ 」

⑦ 如何用shell将nginx配置文件中日志默认格式nginx-access,log 替换成指定格式

1.客户端(用户)IP地址。如:上例中的 10.1.1.1 (内网负载均衡地址)2.访问时间。如:上例中的 [22/Aug/2014:16:48:19 +0800]3.访问端口。如:上例中的 127.0.0.1:80804.响应时间。如:上例中的 0.0225.请求时间。如:上例中的 0.0226.用户地理位置代码(国家代码)。

⑧ nginx 配置文件里面 怎么设置 时间变量

nginx模块一般被分成三大类:handler、filter和upstream。前面的章节中,读者已经了解了handler、filter。利用这两类模块,可以使nginx轻松完成任何单机工作。而本章介绍的upstream模块,将使nginx跨越单机的限制,完成网络数据的接收、处理和转..

⑨ ngnix 配置文件 设定timeout时间

nginx常用的超时配置说明

client_header_timeout

语法 client_header_timeout time默认值 60s上下文 http server(指可以放在http块和server块)说明 指定等待client发送一个请求头的超时时间(例如:GET / HTTP/1.1).仅当在一次read中,没有收到请求头,才会算成超时。如果在超时时间内,client没发送任何东西,nginx返回HTTP状态码408(“Request timed out”)client_body_timeout语法 client_body_timeout time默认值 60s上下文 http server location说明 该指令设置请求体(request body)的读超时时间。仅当在一次readstep中,没有得到请求体,就会设为超时。超时后,nginx返回HTTP状态码408(“Request timed out”)keepalive_timeout (长连接类型)语法 keepalive_timeout timeout [ header_timeout ]默认值 75s上下文 http server location说明 第一个参数指定了与client的keep-alive连接超时时间。服务器将会在这个时间后关闭连接。可选的第二个参数指定了在响应头Keep-Alive: timeout=time中的time值。这个头能够让一些浏览器主动关闭连接,这样服务器就不必要去关闭连接了。没有这个参数,nginx不会发送Keep-Alive响应头(尽管并不是由这个头来决定连接是否“keep-alive”)(服务器在返回数据给用户时,在头header文件中会添加keepalive字段,75s,浏览器在这个时间后能够主动关闭连接)两个参数的值可并不相同

注意不同浏览器怎么处理“keep-alive”头

MSIE和Opera忽略掉"Keep-Alive: timeout=<N>" header.

MSIE保持连接大约60-65秒,然后发送TCP RST

Opera永久保持长连接

Mozilla keeps the connection alive for N plus about 1-10 seconds.

Konqueror保持长连接N秒

lingering_timeout语法 lingering_timeout time默认值 5s上下文 http server location说明 lingering_close生效后,在关闭连接前,会检测是否有用户发送的数据到达服务器,如果超过lingering_timeout时间后还没有数据可读,就直接关闭连接;否则,必须在读取完连接缓冲区上的数据并丢弃掉后才会关闭连接。resolver_timeout语法 resolver_timeout time默认值 30s上下文 http server location说明 该指令设置DNS解析超时时间proxy转发模块的超时设置:proxy_connect_timeout语法 proxy_connect_timeout time默认值 60s上下文 http server location说明 该指令设置与upstream server的连接超时时间,有必要记住,这个超时不能超过75秒。这个不是等待后端返回页面的时间,那是由proxy_read_timeout声明的。如果你的upstream服务器起来了,但是hanging住了(例如,没有足够的线程处理请求,所以把你的请求放到请求池里稍后处理),那么这个声明是没有用的,因为与upstream服务器的连接已经建立了。

This directive assigns a timeout for the connection to the proxyserver. This is not the time until the server returns the pages, this is the proxy_read_timeout statement. If your proxyserver is up, but hanging (e.g. it does not have enough threads to process your request so it puts you in the pool of connections to deal with later), then this statement will not help as the connection to the server has been made. It is necessary to keep in mind that this time out cannot be more than 75 seconds.

proxy_read_timeout语法 proxy_read_timeout time默认值 60s上下文 http server location说明 该指令设置与代理服务器的读超时时间。它决定了nginx会等待多长时间来获得请求的响应。这个时间不是获得整个response的时间,而是两次reading操作的时间。(??什么是两次reading操作的时间)

This directive sets the read timeout for the response of the proxied server. It determines how long NGINX will wait to get the response to a request. The timeout is established not for entire response, but only between two operations of reading.

In contrast to proxy_connect_timeout, this timeout will catch a server that puts you in it's connection pool but does not respond to you with anything beyond that. Be careful though not to set this too low, as your proxy server might take a longer time to respond to requests on purpose (e.g. when serving you a report page that takes some time to compute). You are able though to have a different setting per location, which enables you to have a higher proxy_read_timeout for the report page's location.

If the proxied server nothing will communicate after this time, then nginx is shut connection.

proxy_send_timeout语法 proxy_send_timeout time默认值 60s上下文 http server location说明 这个指定设置了发送请求给upstream服务器的超时时间。超时设置不是为了整个发送期间,而是在两次write操作期间。如果超时后,upstream没有收到新的数据,nginx会关闭连接proxy_upstream_fail_timeout(fail_timeout)语法 server address [fail_timeout=30s]默认值 10s上下文 upstream说明 Upstream模块下 server指令的参数,设置了某一个upstream后端失败了指定次数(max_fails)后,该后端不可操作的时间,默认为10秒

负载均衡配置时的2个参数:fail_timeout和max_fails

这2个参数一起配合,来控制nginx怎样认为upstream中的某个server是失效的当在fail_timeout的时间内,某个server连接失败了max_fails次,则nginx会认为该server不工作了。同时,在接下来的 fail_timeout时间内,nginx不再将请求分发给失效的server。个人认为,nginx不应该把这2个时间用同一个参数fail_timeout来控制,要是能再增加一个fail_time,来控制接下来的多长时间内,不再使用down掉的server就更好了~如果不设置这2个参数,fail_timeout默认为10s,max_fails默认为1。就是说,只要某个server失效一次,则在接下来的10s内,就不会分发请求到该server上

send_timeout

默认:send_timeout 60;

send_timeout指定客户端的响应超时时间。这个设置不会用于整个转发器,而是在两次客户端读取操作之间。如果在这段时间内,客户端没有读取任何数据,nginx就会关闭连接。

Directive assigns response timeout to client. Timeout is established not on entire transfer of answer, but only between two operations of reading, if after this time client will take nothing, then nginx is shutting down the connection.

另一个参考:504 Gateway Time-out问题

常见于使用nginx作为web server的服务器的网站我遇到这个问题是在升级discuz论坛的时候遇到的一般看来, 这种情况可能是由于nginx默认的fastcgi进程响应的缓冲区太小造成的, 这将导致fastcgi进程被挂起, 如果你的fastcgi服务对这个挂起处理的不好, 那么最后就极有可能导致504 Gateway Time-out现在的网站, 尤其某些论坛有大量的回复和很多内容的, 一个页面甚至有几百K默认的fastcgi进程响应的缓冲区是8K, 我们可以设置大点在nginx.conf里, 加入:fastcgi_buffers 8 128k这表示设置fastcgi缓冲区为8×128k当然如果您在进行某一项即时的操作, 可能需要nginx的超时参数调大点, 例如设置成60秒:send_timeout 60;调整了这两个参数, 结果就是没有再显示那个超时, 可以说效果不错, 但是也可能是由于其他的原因, 目前关于nginx的资料不是很多, 很多事情都需要长期的经验累计才有结果。

proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 10m;client_body_buffer_size 128k;proxy_connect_timeout 90;proxy_send_timeout 90;proxy_read_timeout 90;proxy_buffer_size 4k;proxy_buffers 32 4k;proxy_busy_buffers_size 64k;

⑩ nginx能自动创建log文件吗

nginx自动切割访问日志 Web 访问日志 (access_log) 记录了所有外部客户端对Web服务器的访问行为,包含了客户端IP,访问日期,访问的URL资源,服务器返回的HTTP状态码等重要信息。一条典型的Web访问日志如下:112.97.37.90 – – [14/Sep/2013:14:37:39 +0800] "GET / HTTP/1.1" 301 5 "-" "Mozilla/5.0 (linux; U; Android 2.3.6; zh-cn; Lenovo A326 Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.1.259" – 规划:1、 要解决问题:当网站访问量大后,日志数据就会很多,如果全部写到一个日志文件中去,文件会变得越来越大。文件大速度就会慢下来,比如一个文件几百兆。写入日志的时候,会影响操作速度。另外,如果我想看看访问日志,一个几百兆的文件,下载下来打开也很慢。使用第三方免费的日志分析工具-日志宝,可以上传nginx、apache、iis的日志文件,它们帮助分析网站安全方面。毕竟专攻,更加专业。日志宝对上传的文件也是做了大小限制的,不超过50m。 2、nignx没有自动分开文件存储日志的机制。由于nginx它不会帮你自动分文件保存。所以,需要自己编写脚本来实现。 shell脚本文件nginx_log_division.sh内容如下: # /bin/bashlogs_path="/data/wwwlogs/"#以前的日志文件。log_name="xxx.log" pid_path="/usr/local/nginx/logs/nginx.pid" mv ${logs_path}${log_name} ${logs_path}${log_name}_$(date –date="LAST WEEK" +"%Y-%m-d").log kill -USR1 `cat ${pid_path}` 上面shell脚本的原理是:先把以前的日志文件移动重命名成一个,目的是就是备份。按照上个周一的本日来命名,运行脚本的时候时间点是”2013-09-16”,那么生成文件名称是”xxx.log_ 20130909.log”。在没有执行kill -USR1 `cat ${pid_path}`之前,即便已经对文件执行了mv命令而改变了文件名称,nginx还是会向新命名的文件” xxx.log_ 20130909”照常写入日志数据的。原因在于:linux系统中,内核是根据文件描述符来找文件的。 —————-对linux文件描述符的理解 文件描述符是linux内核为每个打开的文件命名的一个整数标识。linux内核为每一个进程生成(或者说维护)一个”文件描述符表”,这个文件描述符表记录的是“此进程所打开的文件(进行标识)”。在这里的环境中,nginx就是一个运行中的进程,这个进程早就打开了一个日志文件,在文件描述符表是记录了文件的。即便日志文件的路径改变了,但是还是能够找到(根据文件描述符表可以定位)。 ———————————————-当执行命令“kill -USR1 `cat ${pid_path}`”的时候,nginx.pid文件中保存的其实就是一个数字(自己可以打开看一下,我这里是894),nginx 将其主进程的 pid (进程号)写入到了nginx.pid 文件中,所以可以通过cat命令直接拿到其主进程号,直接操作指定的进程号。 kill -USR1 `cat ${pid_path}` 就等同于kill –USR1 894 #指定发信号(USR1)信号给这个进程编号。 在linux系统中,linux是通过信号与”正在运行的进程”进行通信的。linux系统中,也很多预定义好的信号,像SIGHUP。USR1是用户自定义信号。可以理解为:进程自己定义接到这个信号该干嘛(也就是进程编写者自己确定收到这个信号干嘛还是什么都不做都行,完全交给开发人员自己决定)。而在nginx中,它自己编写了代码处理当我接到USR1信号的时候,让nginx重新打开日志文件。具体原理如下:1、nginx 的主进程收到USR1信号,会重新打开日志文件(以nginx配置文件中的日志名称命名,就是配置文件中access_log项所设置的值,如果文件不存在,会自动创建一个新的文件xxx.log)。 2、然后把日志文件的拥有者改为“工作进程(worker进程)”,目的是让worker进程就具备了对日志文件的读写权限(master和worker通常以不同用户运行,所以需要改变拥有者)。 3、nginx主进程会关闭重名的日志文件(也就是刚才使用mv命令重命名成xxx.log_ 20130909.log的文件),并通知工作进程使用新打开的日志文件(刚才主进程打开的文件xxx.log)。具体实现上更细化点就是,主进程把USR1信号发给worker,worker接到这个信号后,会重新打开日志文件(也就是配置文件中约定的xxx.log)===================================定时执行脚本


赞 (0)