手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:nginx

nginx + acme.sh + frp ,轻松本地+线上 SSL泛域名

如题的组合。由于本地写代码,比较不方便搞成SSL,毕竟自签名证书现在大部分浏览器都不认了。而且现在微信开发(小程序)、APP等都只认SSL。所以才有了利用frp来进行SSL穿透。

步骤我说的简单一点。不详细 说了

如果不需要内网穿透,其实就是 nginx + acme.sh 就Over了,只是nginx需要配置一下(记得泛域名使用的是fullchain.cer,普通 的单域名是用的xxx.domain.cer)

如果需要内网穿透,步骤简要如下

1、frps -> 设置vhost_http_port(本次假定为8888) ,然后利用supervisor 管理frp (可以使得frp异常崩溃后能够重启)【或者使用systemd,各人喜欢】

2、设置nginx,server_name 为 *.app.neatstudio.com (以app.neatstudio.com为例),在proxy_pass中选择使用upstream,设置为刚才的vhost_http_port,例:

XML/HTML代码
  1. upstream app.neatstudio.com {  
  2.     server 127.0.0.1:8888;  
  3. }  
  4.   
  5. server {  
  6.     listen 80;  
  7.     server_name *.app.neatstudio.com;  
  8.   
  9.     listen 443 ssl;  
  10.     ssl on;  
  11.     ssl_certificate /etc/nginx/ssl/*.app.neatstudio.com.fullchain.cer;  
  12.     ssl_certificate_key /etc/nginx/ssl/*.app.neatstudio.com.key;  
  13.   
  14.     ssl_session_cache shared:SSL:20m;  
  15.     ssl_session_timeout 10m;  
  16.   
  17.     ssl_prefer_server_ciphers       on;  
  18.     ssl_protocols                   TLSv1 TLSv1.1 TLSv1.2;  
  19.     ssl_ciphers                     ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;  
  20.   
  21.     # turn on the OCSP Stapling and verify  
  22.     ssl_stapling on;  
  23.     ssl_stapling_verify on;  
  24.     ssl_trusted_certificate /etc/nginx/ssl/*.app.neatstudio.com.fullchain.cer;  
  25.   
  26.   
  27.   
  28.     add_header Strict-Transport-Security "max-age=31536000";  
  29.   
  30.     location / {  
  31.         proxy_pass http://app.neatstudio.com;  
  32.         include /etc/nginx/proxy_params;  
  33.     }  
  34. }  

3、在本地(或者任意一台想有https的服务器上)安装frpc,设置subdomain就行了,例:

XML/HTML代码
  1. [test.app.ns.com]  
  2. type=http  
  3. port=80  
  4. subdomain=test  

这样就OK了。[]里的test.app.ns.com,为什么取这个名字?是因为。。。frp的客户端中的任意[]包含的TAG,都不能重名(切记)

然后一切Over(因为我使用mac+mamp,所以会更方便的管理域名)

 

Tags: frp, acme.sh, nginx, mamp

用nginx proxy模式后,提交POST出错

用了nginx(proxy)+apache后,提交数据偶尔会出现:upstream sent too big header while reading response header from upstream,这个其实比较好解决

修改proxy_params文件在里面加入:
XML/HTML代码
  1. proxy_buffer_size   128k;  
  2. proxy_buffers   4 256k;  
  3. proxy_busy_buffers_size   256k;  
修改完后nginx -s reload一下就直接搞定了。
如果发现还是搞不定,加大后面的数字吧
 
在stackoverflow上,有人还是提出了,如果你是长链接的话,设置proxy_buffering off吧。参考:https://stackoverflow.com/questions/23844761/upstream-sent-too-big-header-while-reading-response-header-from-upstream
 
 

Tags: nginx, proxy, upstream

using NGINX or not?

 有人在stackoverflow上面提问:

http://stackoverflow.com/questions/17776584/webserver-for-go-golang-webservices-using-nginx-or-not
  1. I am writing some webservices returning JSON data, which have lots of users.    
  2. Would you recommend to use NGINX as a webserver or it is good enough to use the standard http server of Go?  

于是有人就回答了:

XML/HTML代码
  1. It depends.  
  2.   
  3. Out of the box, putting nginx in front as a reverse proxy is going to give you:  
  4.   
  5. Access logs  
  6. Error logs  
  7. Easy SSL termination  
  8. SPDY support  
  9. gzip support  
  10. Easy ways to set HTTP headers for certain routes in a couple of lines  
  11. Very fast static asset serving (if you're serving off S3/etc. though, this isn't that relevant)  
  12. The Go HTTP server is very good, but you will need to reinvent the wheel to do some of these things (which is fine: it's not meant to be everything to everyone).  
  13.   
  14. I've always found it easier to put nginx in front—which is what it is good at—and let it do the "web server" stuff. My Go application does the application stuff, and only the bare minimum of headers/etc. that it needs to. Don't look at putting nginx in front as a "bad" thing.  

还有人回答:

XML/HTML代码
  1. The standard http server of Go is fine. If your application mostly/only are "dynamic" requests/responses, then it's really the best way.  
  2.   
  3. You could use nginx to serve static assets, but most likely the standard Go one is fine for that, too. If you need higher performance you should just use a CDN or cache as much as you can with Varnish (for example).  
  4.   
  5. If you need to serve different applications off the same IP address, nginx is a fine choice for a proxy to distribute requests between the different applications; though I'd more often get Varnish or HAProxy out of the toolbox for that sort of thing.  

这回你觉得呢?你还会用nginx吗?还是只用go做http server/???

Tags: nginx, go

nginx 的resolv.conf经常被自动清空

有时候,服务器上用的DNS其实并不是我想要的,有些DNS其实速度慢,而且解析更慢,更新也慢。所以这时候就想要换一个快一点的dns了。

第一个想到要改的是resolv.conf,在里面加入nameserver 114.114.114.114,但改完后,过一阵子看,却发现文件又空了。找了下资料,原来不能这样。。

直接改/etc/network/interface ,在里面加入:dns-nameservers 114.114.114.114 8.8.8.8

看好了,这里是dns开头,而且是复数。完了重启networking即可

参考:http://blog.jsdan.com/3743

因为上面是台湾网站,如果打不开,请看这个PDF:[ubuntu] 修改 resolv.pdf

Tags: nginx, resolv

转一下:OpenResty

前段时间,老王推荐了一个伪同步的代码,async,可以到github上找到代码:https://github.com/hugozhu/async_php/,其中,有一个lua的目录,是用来为nginx提供插件以担当这个同步功能的一些玩意。
于是冲到nginx上看了一下,NND,没这玩意嘛 .
再一瞅github上,原来还写着:
ngx_lua module - http://openresty.org latest stable release
我晕,那openresty是什么玩意呢?去官方看了看,一大堆英文,但是左侧的支付宝捐赠让我怀疑这应该是个国人的作品。于是找啊找,找了一个中文介绍:

官网: http://openresty.org/
虽然是中国人做的,但没几个汉字.....

我用Nginx,是这样一个过程:
1. 系统rpm中的nginx,能让其跑起来
2. 玩配置文件
3. 玩编译选项
4. 写插件,集成第三方插件

OpenResty , 是淘宝一位大牛(agentzh)集成的包含N多好插件的Nginx捆绑源码包,这位仁兄自称Nginx最活跃的第三方模块开发人员哦

下面,当然要列一下到底集成了什么模块:

LuaJIT -- 极速版Lua实现
ArrayVarNginxModule -- 数组类型的Nginx变量
AuthRequestNginxModule -- 鉴权,想象一下以C代码的速度判断一个请求是否合法,是不是很有快感呢?!
DrizzleNginxModule -- -MySQL桥,非阻塞的哦,我又爱又恨的一个模块,值得注意的是,其响应是RDS流
EchoNginxModule -- 以非常直观的方式在Nginx配置文件中编写简单的处理逻辑,源码包含大量注释,绝对是入门好例子!!
EncryptedSessionNginxModule -- 加密会话
FormInputNginxModule -- 解析post请求中的参数,这下子,简单请求根本不需要PHP/Java来处理啦
HeadersMoreNginxModule -- Nginx默认的header模块只能添加或忽略,这个给你CRUD全套的!!
IconvNginxModule -- 编码转换,不多说,也不懂
StandardLuaInterpreter -- 与Lua官方实现所匹配,一般用不上,因为我们用LuaJIT!!
MemcNginxModule -- 与Memcached的绝配,谁用谁知道!! 与upstram_keepalive一起用,你能更High!!
Nginx
NginxDevelKit -- N多第三方插件都依赖的东西,不知道为啥
LuaCjsonLibrary -- Lua版的Json处理库实在太慢,这个才叫速度!!
LuaNginxModule -- 我的最爱,一般逻辑,完全没必要用Java/PHP啦
LuaRdsParserLibrary -- 在Lua中直接处理RDS流,速度杠杠的!
LuaRedisParserLibrary -- 在Lua中处理Redia模块的响应,暂时我还没用上
PostgresNginxModule -- Nginx-Postgres桥,输出的也是RDS流
RdsCsvNginxModule -- RDS流转CVS格式,不知道能干啥,报表?
RdsJsonNginxModule -- RDS流转JSON字符串,之前经常用这个
Redis2NginxModule -- Nginx-Redis2桥
SetMiscNginxModule -- 提供很多很实用的方法,例如base64编解码,URL编解码,SQL防注入等等
SrcacheNginxModule -- 缓存模块,据说跟Memc模块一起用比较爽
UpstreamKeepaliveNginxModule -- 与Memc模块的标配,号称性能提升几倍呢
XssNginxModule -- 防跨站攻击的

OpenResty的最大的好处是帮你弄清楚各个模块的编译顺序,别小看,学问大大的呢

当初没有这东西,单单弄清楚模块间的编译顺序就耗费不少时间

来吧,试试这个国产的精品!!
-------EOF--------
以上这段内容来自:http://wendal.net/338.html
值得看看哦。可以尝试用lua写插件

Tags: nginx, openresty, github

Records:1012