Tag: nginx

  • How to start Nginx after shared folder mounted on VirtualBox

    Recently, I set up a new developing environment in a VirtualBox VM. The source code shares between the host and VM by shared folder. It causes a problem that the config file can not be found when Nginx is starting up.

    Nginx can not find the specific config file which is in the mounted folder from the host

    I searched on Google and found some related posts.

    If Nginx does not start after rebooting the server” points out the correct direction of the solution, however, the changes of method 1 mentioned in the article is not working for VirtualBox, and personally, I don’t like the method 2.

    While, “How to mount shared folder from VirtualBox at boot time in Debian” describes the mount must happen after vboxadd-service.service started.

    Combine this two posts, the solution would be obvious.

    Solution

    Change the line /etc/systemd/system/multi-user.target.wants/nginx.service in the configuration file of Nginx in VM

    After=network.target

    Adding vboxadd-service.service

    After=network.target vboxadd-service.service

    Reboot the VM.

    Check Nginx running status with the following command

    sudo service nginx status
    Nginx started successfully after changes

    Solved!

  • [翻译] Nginx 备战-优化指南

    对于上线优化这个事情,个人来说更加倾向于使用一些快速的调优模式首先来解决 80% 的问题。感觉上这篇“Battle ready Nginx – an optimization guide”讲得还是很到位了。所以随手翻译了,分享给大家。

    ———— 翻译分隔线 ————

    Nginx 备战-优化指南

    作者:Zachary Orr

    大多数关于 Nginx 的指南只告诉你那最基本的部分:apt-get 一个包,修改这里和那里的某些行,然后就得到了一个 web 服务器!而在大多数情况下,一个常见的 nginx 安装也能为你的网站提供良好的服务。然而如果你的确想进一步压榨 nginx 的性能,那么就必须走得更远一些。在这个指南中,我将会解释通过调整 nginx 中的哪些设置可以得到更好的性能,来应对大量客户端请求。同时要注意,这不是完整的调优指南。只是对一些可以调整来改进性能的设置的简单概述。请务必具体情况具体对待。

    (more…)

  • [翻译]用 Go 实现零停机升级 TCP 服务

    零停机升级几乎是现代网络服务的标配,其实现原理并不复杂……blablabla……( 从文件描述符讲起,省略一万字)。现在有人确认 Go 也可实现零停机升级 TCP 服务或者更加简短的叫法——热更新。

    原文在此:Zero Downtime upgrades of TCP servers in Go

    —————-翻译分隔线—————-

    用 Go 实现零停机升级 TCP 服务

    最近在 golang-nuts 邮件列表上有篇帖子提到 Nginx 可以保持服务的时候进行升级,而无需停止它正在监听的 socket。秘诀是取消监听的 socket 上的 close-on-exec,然后 fork 并运行一个新的服务(用升级后的二进制文件),并用参数告诉它使用继承的文件描述符,而不是调用 scoket() 和 listen(s)。

    于是我就想试试在 Go 中是否能做到同样的事情,以及对于标准库需要做什么样的修改来达到这个效果。最终我实现了这个功能,而且只需要很小的修改,接下来会解释一下是如何做到的。

    (more…)

  • 关于昨日爆出的 Nginx + PHP CGI 漏洞的一点点补充

    我第一次看到这个漏洞是在 Laruence 的博客。看完之后,我赶紧评估了一下我们正在开发的产品出现这个漏洞的可能性。还不错,在我们当前架构下,这个漏洞被成功利用的可能性为 0 ……

    结果,今天在大嘴巴 cnbeta 看到了这篇很标题党的新闻《80后发现nginx 0day漏洞,上传图片可入侵100万服务器》。然后引用的出处是这里

    好了,我认为我提供的背景资料足够详细了。现在说说为什么我们的产品不会出现这个被利用的可能吧。

    其实很简单,将资源文件和 php 脚本文件放在不同的域名下面。然后将资源文件(含产品自身的和用户贡献的)的访问限于只作文件传输,不作任何的脚本解析。

    例如 PHP 脚本执行的主机名是 www.mikespook.com。而上传文件和图像、js、css 等放在 static.mikespook.com 主机名下。

    其实,就是这么简单的一个隔离措施,就避免了出现这种上传并解析的漏洞。

    即使想用同一个域名,通过对 nginx 的配置禁止资源文件目录下的文件被当作脚本解析也是很容易的。

    这个故事教育我们:细节是基石,架构是王道!!!

    另,根据来自高春辉的可靠消息,手机之家也不存在此问题……

  • 在 Ubuntu 9.10 Server 上安装 Nginx 0.8.34

    Nginx 在 3 月 3 日放出了 0.8.34 这个开发版。张宴也随即更新了《Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器》到第六版。不过,他写的记录是针对 CentOS、Redhat 等 rpm 包管理的服务器。由于习惯了 debian 系列的服务器,特别是用惯了 ubuntu 服务器,在这里特别做一下 Ubuntu 9.10 下的安装笔记。其他基于 deb 包管理的发行版也类似。 (more…)