nginx使用笔记
文章目录
安装
###ubuntu sudo apt-get install nginx
编译安装
waiting (可以加入其它模块)
配置文件
- /etc/nginx //所有的配置文件
- /etc/nginx/sites-available //sites-available存放所有配置文件,无论是非启用
- /etc/nginx/sites-enabled //软链接到sites-available,这里的符号链接代表启用
- /var/log/nginx //日志
- /etc/init.d/ //该目录下有启动脚本
- /usr/share/nginx/www //默认的虚拟主机的目录
- /usr/sbin/nginx //启动文件
匹配语法
location匹配命令可以参考: nginx location匹配规则
location 优先级:
- =前缀的指令严格匹配这个查询。如果找到,停止搜索。
- 所有剩下的常规字符串,最长的匹配。如果这个匹配使用^〜前缀,搜索停止。
- 正则表达式,在配置文件中定义的顺序。
- 如果第3条规则产生匹配的话,结果被使用。否则,使用第2条规则的结果。
例子:
|
|
日常管理
- sudo /etc/init.d/nginx start //apt安装的启动方式
- sudo /etc/init.d/nginx restart //重启
用例
一个静态文件服务器
|
|
|
|
添加认证用户:
|
|
反向代理
假设我们的网站跑在5000端口(flask demo)
|
|
我们也时常反向代理到内网的服务器上,诸如: proxy_pass http://192.168.100.2
;
如果内网服务器上有多个网站(server_name),那么外层反向代理服务器需要先把server_name导向内网ip,然后内网服务器的nginx来处理具体请求,server_name写了两次。内网的配置不受影响
流媒体
ps:目前版本的nginx好像支持视频流,或者自己编译添加视频模块
目前 WEB 上主流的视频直播方案有 HLS(HTTP Live Streaming) 和 RTMP,移动 WEB 端目前就只有 HLS 能用
docker镜像
docker
我们可以借助docker来使用使用nginx,借助-v参数,可将宿主机的目录映射到docker里,这样一来网站目录和配置文件都不是问题
sudo docker run -it -p 80:80 -v `pwd`/www:/www -v `pwd`/config:/etc/nginx/sites-enabled -v `pwd`/logs:/var/log/nginx dockerfile/nginx
解释:
- -v `pwd`/www:/www,将当前路径下的www目录设置为/www,和server配置的路径对应
- -v `pwd`/logs:/var/log/nginx,nginx运行时产生的日志
- -v `pwd`/config:/etc/nginx/sites-enabled,server文件的本地路径,映射到docker容器的nginx配置路径。config目录下放一个文件,名为server,Nginx静态网站配置文件,内容为
|
|
相关项目
server-configs-nginx
Nginx HTTP server boilerplate configs
nginx-rtmp-module
NGINX-based Media Streaming Server
nginx-boilerplate
Awesome Nginx configuration template
openresty
Turning Nginx into a Full-Fledged Scriptable Web Platform (高效)
ngxtop
Real-time metrics for nginx server
nginxparser
Parses nginx configuration with Pyparsing
Same as other serialization modules also you can export configuration with dump and dumps methods.
VeryNginx
功能强大且拥有对人类友好界面的Nginx,提供防火墙,自定义行为,和统计功能
如果你不想安装 OpenResty,或者你已经有了一个正在工作的 Nginx,你也可以自己手动为 Nginx 编译安装这些模块
遇到问题及解决方案
- Q1:you should increase server_names_hash_bucket_size: 32
- A: 在配置文件(/etc/nginx/nginx.conf)的http{}段增加一行配置 :
server_names_hash_bucket_size 64;
- A: 在配置文件(/etc/nginx/nginx.conf)的http{}段增加一行配置 :
重定向到https
|
|
tips
- 检查配置:
sudo nginx -t
#参考
文章作者 种瓜
上次更新 2016-05-04