魏长东

weichangdong

正在查看: nginx 分类下的文章(第 1 页 / 共 19 篇)

post请求转发

post请求转发
server {
		listen       80;
        server_name  www.fenglangjuxu.com;
        access_log  /var/log/php-fpm/5.6/lang.log  main;
        root   "/work/wcd/public";
		#location / {
		#       index  index.php;
		#       try_files $uri $uri/ /index.php?$args;
		#}
         location / {
                proxy_pass http://123.456.789.123;
         }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}

nginx location匹配规则

location匹配命令

~      #波浪线表示执行一个正则匹配,区分大小写
~*    #表示执行一个正则匹配,不区分大小写
^~    #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录
=      #进行普通字符精确匹配
@     #"@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files

 

location 匹配的优先级(与location在配置文件中的顺序无关)
= 精确匹配会第一个被处理。如果发现精确匹配,nginx停止搜索其他匹配。
普通字符匹配,正则表达式规则和长的块规则将被优先和查询匹配,也就是说如果该项匹配还需去看有没有正则表达式匹配和更长的匹配。
^~ 则只匹配该规则,nginx停止搜索其他匹配,否则nginx会继续处理其他location指令。
最后匹配理带有"~"和"~*"的指令,如果找到相应的匹配,则nginx停止搜索其他匹配;当没有正则表达式或者没有正则表达式被匹配的情况下,那么匹配程度最高的逐字匹配指令会被使用。

location 优先级官方文档

  1. Directives with the = prefix that match the query exactly. If found, searching stops.
  2. All remaining directives with conventional strings, longest match first. If this match used the ^~ prefix, searching stops.
  3. Regular expressions, in order of definition in the configuration file.
  4. If #3 yielded a match, that result is used. Else the match from #2 is used.
  1. =前缀的指令严格匹配这个查询。如果找到,停止搜索。
  2. 所有剩下的常规字符串,最长的匹配。如果这个匹配使用^〜前缀,搜索停止。
  3. 正则表达式,在配置文件中定义的顺序。
  4. 如果第3条规则产生匹配的话,结果被使用。否则,如同从第2条规则被使用。

 

»»阅读全文

nginx-push-stream-module 使用

安装完成之后,实现了我一直以来想实现的效果。浏览器上显示了推送的消息。不是浏览器主动请求触发的。

大体流程这样的,现在浏览器上访问一个地址,然后这个请求应该是一直没断。然后我在服务器发送一条消息,浏览器就显示了这条消息。好神奇啊,有木有~~~~

web-push.png

下面给出安装的过程

»»阅读全文

Nginx 的 Echo 模块 —— echo-nginx-module

这个模块不包含在 Nginx 源码中,安装方法:

1. 首先下载模块源码:https://github.com/agentzh/echo-nginx-module/tags
2. 解压到某个路径,假设为 /path/to/echo-nginx-module
3. 使用下面命令编译并安装 Nginx

$ wget 'http://sysoev.ru/nginx/nginx-1.0.11.tar.gz'
$ tar -xzvf nginx-1.0.11.tar.gz
$ cd nginx-1.0.11/
 
# Here we assume you would install you nginx under /opt/nginx/.
$ ./configure --prefix=/opt/nginx \
--add-module=/path/to/echo-nginx-module
 
$ make -j2
$ make install

»»阅读全文

nginx+lua+redis三国演义

今天看到redis2_query  redis2_pass,然后网上一看,原来又是nginx的扩展。

以下copy 网路,自己还没有真正搞过。

redis2-nginx-module 是一个支持 Redis 2.0 协议的 Nginx upstream 模块,它可以让 Nginx 以非阻塞方式直接防问远方的 Redis 服务,同时支持 TCP 协议和 Unix Domain Socket 模式,并且可以启用强大的 Redis 连接池功能。

安装lua
# apt-get install lua5.1
# apt-get install liblua5.1-dev
# apt-get install liblua5.1-socket2
安装nginx
# apt-get install git-core
# git clone https://github.com/simpl/ngx_devel_kit.git
# git clone https://github.com/chaoslawful/lua-nginx-module.git
# git clone https://github.com/agentzh/redis2-nginx-module.git
# git clone https://github.com/agentzh/set-misc-nginx-module.git
# git clone https://github.com/agentzh/echo-nginx-module.git
# git clone https://github.com/catap/ngx_http_upstream_keepalive.git
# apt-get install libpcre3 libpcre3-dev libltdl-dev libssl-dev libjpeg62 libjpeg62-dev libpng12-0
 libpng12-dev 
libxml2-dev libcurl4-openssl-dev libmcrypt-dev autoconf 
libxslt1-dev libgd2-noxpm-dev libgeoip-dev libperl-dev -y
# wget http://nginx.org/download/nginx-1.0.8.tar.gz
# tar zxvf nginx-1.0.8.tar.gz
# cd nginx-1.0.8
# ./configure --prefix=/usr/local/nginx --with-debug --with-http_addition_module \
--with-http_dav_module --with-http_flv_module --with-http_geoip_module \
--with-http_gzip_static_module --with-http_image_filter_module --with-http_perl_module \
--with-http_random_index_module --with-http_realip_module --with-http_secure_link_module \
--with-http_stub_status_module --with-http_ssl_module --with-http_sub_module \
--with-http_xslt_module --with-ipv6 --with-sha1=/usr/include/openssl \
--with-md5=/usr/include/openssl --with-mail --with-mail_ssl_module \
--add-module=../ngx_devel_kit \
--add-module=../echo-nginx-module \
--add-module=../lua-nginx-module \
--add-module=../redis2-nginx-module \
--add-module=../ngx_http_upstream_keepalive \
--add-module=../set-misc-nginx-module
# make
# make install
安装lua-redis-parser


# git clone https://github.com/agentzh/lua-redis-parser.git
# export LUA_INCLUDE_DIR=/usr/include/lua5.1
# make CC=gcc
# make install CC=gcc

安装json
# wget http://files.luaforge.net/releases/json/json/0.9.50/json4lua-0.9.50.zip
# unzip json4lua-0.9.50.zip
# cp json4lua-0.9.50/json/json.lua /usr/share/lua/5.1/
安装redis-lua

# git clone https://github.com/nrk/redis-lua.git
# cp redis-lua/src/redis.lua /usr/share/lua/5.1/

»»阅读全文

lua html模板(win)

set $template_location "/html";   
	set $template_root "D:/openresty/html/html";
	

	
	location /html_html {  
		default_type 'text/html';  
		content_by_lua_file "html/html/test_template_1.lua";   
	}  
	
	location /html_html2 {  
		default_type 'text/html';  
		content_by_lua_file "html/html/test_template_2.lua";   
	} 
	
		
	location /html_html3 {  
		default_type 'text/html';  
		charset utf-8;
		#ngx.header['Content-Type']="text/html;charset=UTF-8"
		content_by_lua_file "html/html/test_template_3.lua";   
	} 

»»阅读全文

Nginx Push Stream Module

https://www.nginx.com/resources/wiki/modules/push_stream/

有时间研究下。

openshift 修改http的配置

修改完配置,kill掉进程,然后用以下的命令重启。

我用的是免费的。

/usr/sbin/httpd -C "Include /var/lib/openshift/5785b5c989f5cf177f00009e/phpmyadmin/conf.d/*.conf" -f /var/lib/openshift/5785b5c989f5cf177f00009e/phpmyadmin/conf/httpd_nolog.conf -c  "Include /etc/openshift/cart.conf.d/httpd/*.conf" -c  "Include /etc/openshift/cart.conf.d/httpd/phpmyadmin/*.conf" -D FOREGROUND &
/usr/sbin/httpd -C "Include /var/lib/openshift/5785b5c989f5cf177f00009e/phpmyadmin/conf.d/*.conf" -f /var/lib/openshift/5785b5c989f5cf177f00009e/phpmyadmin/conf/httpd_nolog.conf -c "Include /etc/openshift/cart.conf.d/httpd/*.conf" -c "Include /etc/openshift/cart.conf.d/httpd/phpmyadmin/*.conf" -D FOREGROUND &
/usr/sbin/httpd -c "Include /var/lib/openshift/5785b5c989f5cf177f00009e/php//configuration/etc/conf.d/*.conf" -f /var/lib/openshift/5785b5c989f5cf177f00009e/php//configuration/etc/conf/httpd_nolog.conf -c "Include /etc/openshift/cart.conf.d/httpd/*.conf" -c "Include /etc/openshift/cart.conf.d/httpd/php/*.conf" -D FOREGROUND &
/usr/sbin/httpd -c "Include /var/lib/openshift/5785b5c989f5cf177f00009e/php//configuration/etc/conf.d/*.conf" -f /var/lib/openshift/5785b5c989f5cf177f00009e/php//configuration/etc/conf/httpd_nolog.conf -c "Include /etc/openshift/cart.conf.d/httpd/*.conf" -c "Include /etc/openshift/cart.conf.d/httpd/php/*.conf" -D FOREGROUND &
/usr/sbin/httpd -c "Include /var/lib/openshift/5785b5c989f5cf177f00009e/php//configura" &

access日志加上执行时间

加上 $request_time
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" $request_time';

nginx没有access日志

开始这么写,没有access日志
access_log  /var/log/php-fpm/5.6/weather.log  main;
root   "/work/wcd/";

调整了下,restart了就ok了
root   "/work/wcd/";
access_log  /var/log/php-fpm/5.6/weather.log  main;