- Nginx更安全;Nginx能更好地处理静态资源(通过一些http request header)。
- Nginx也可以缓存一些动态内容;Nginx可以更好地配合CDN。
- Nginx可以进行多台机器的负载均衡。
- 不需要在wsgi server那边处理keep alive;让Nginx来处理slow client。
使用了Gunicorn或者uWSGI,为什么还需要Nginx?
- 本地有多个 web 服务,有 Python、php、java 编写的,都想监听 80 端口,Nginx可以负责转发服务。
- 如服务器被人 黑,nginx 可以比较方便的把一些 IP 加入黑名单,直接改配置文件就好了。要是 uwsgi 或者 gunicorn,可能还要修改自己应用的代码,把 IP 过滤写进去。
Nginx 服务相关的操作
$ sudo apt-get install nginx //安装
$ sudo service nginx start //启动
$ sudo service nginx status //状态
$ sudo service nginx stop //停止
$ sudo service nginx restart //重启
ps -aux | grep nginx //查看Nginx进程
内容
- /var/www/html :实际的Web内容,它在默认情况下只包含您在前面看到的默认Nginx的页面,供应出的/var/www/html目录。 这可以通过改变Nginx配置文件来改变。
服务器配置
- /etc/nginx :nginx的配置目录。 所有的Nginx配置文件位于这里。
- /etc/nginx/nginx.conf :主要Nginx的配置文件。 这可以修改以更改Nginx全局配置。
- /etc/nginx/sites-available :其中每个站点的“服务器模块”可以保存的目录。 Nginx的不会用找到的配置文件,在这个目录中,除非它们被链接到sites-enabled目录(见下文)。 通常,所有服务器块配置都在此目录中完成,然后通过链接到其他目录启用。
- /etc/nginx/sites-enabled/ :其中,启用每个站点的“服务器块”存储的目录。 通常,这些被链接到配置中找到的文件创建sites-available目录。
- /etc/nginx/snippets :该目录包含可在Nginx的配置在其他地方被列入配置片段,潜在可重复的配置段是重构到片段的良好候选。(这条不懂)
服务器日志
- /var/log/nginx/access.log :到Web服务器的每个请求都被记录在此日志文件,除非Nginx的配置不这样做。
- /var/log/nginx/error.log :任何Nginx的错误会被记录在此日志。
nginx配置的基本思路和步骤如下
- 把2个站点
example1.com
, example2.com
放到 nginx 可以访问的目录 /www/
- 给每个站点分别创建一个 nginx 配置文件 example1.com.conf,example2.com.conf,
并把配置文件放到 /etc/nginx/sites-available/下,
- 把/etc/nginx/sites-available/的example1.com.conf,example2.com.conf两个文件,符号链接(默认的default配置文件就是如此,你看sites-enabled下的default文件的属性)到/etc/nginx/sites-enabled/目录下(使用绝对路径)
sudo ln -s /etc/nginx/sites-available/example1.com /etc/nginx/sites-enabled/example1.com
- 确认在 /etc/nginx/nginx.conf 里面有一句
include /etc/nginx/sites-enabled/*;
example.com.conf
文件配置详解
- 各个字段的意思
- 作用细节