nginx 简明教程
安装
nginx 的安装可以使用 apt-get 或者从官网(http://nginx.org/download)下载安装包自行安装。不过两者最后的安装路径是不同的,所以造成后面需要配置的文件路径也是不同的。具体不同如下:
通过下载安装包(nginx-1.9.9.tar.gz)进行的安装,软件路径在 /usr/local/nginx 下
安装方法:
- wget http://nginx.org/download/nginx-1.9.9.tar.gz
- tar -zxvf nginx-1.9.9.tar.gz
- cd nginx-1.9.9/
- ./configure:此时如果可能提示诸如 缺少 PCRE Library,通过 sudo apt-get install libpcre3 libpcre3-dev 即可
- make
- sudo make install
结构介绍:
- logs/(日志路径): 包含access.log(正常访问日志),error.log(错误日志),nginx.pid(运行时的 nginx id 号)
- sbin/(执行路径): 包含 nginx(可执行文件)
- html/(静态内容路径):index.html(默认的 nginx 欢迎页面,具体在后面配置时介绍)
- conf/(配置路径):nginx.conf(配置文件)
通过 apt-get 进行的安装, 软件路径在 /etc/nginx 下
- 可执行文件已经添加到 /usr/sbin/nginx 中,可以直接在命令行执行
- conf.d/:放置自定义的配置文件
- sites-available/ sites-enabled/:sites-available 存放系统配置文件,sites-enabled 存放 sites-available 中需要使用的某些配置的连接
- nginx.conf:nginx 的配置文件,其中 include 了上面的 conf.d/ 和 sites-enabled/ 中的配置
配置
两种安装方式需要配置的东西大致类似,不过细节上还是有一定区别。
通过安装包安装
需要的配置主要就是 /usr/local/nginx/conf/nginx.conf 文件,其中主要结构如下
http {
# 静态文件映射
server {
listen 80; ------------- 监听的端口
server_name www.domain1.com; ------------- 直接访问的 url
location / { ------------- 映射的 url 路径,后续路径将对应路径与 root 指定的根路径的对应路径关联
index index.html; ------------- 映射的对应文件
root /var/www/domain1.com/htdocs; ------------- 实际访问的根目录
}
}
# 动态访问映射
server {
listen 80;
server_name www.domain2.com;
location /test {
proxy_pass http://127.0.0.1:8051/real_test ------------- 对 www.domain2.com/test 的访问将被转发到本机 8051端口的 real_test 请求上
}
}
}
其结构主要通过 http {} 来指定 http 相关内容,server {} 指定每一个映射关系。如果需要负载均衡(存在多个服务),可以通过配置 upstream {} 进行配置。需要注意的是映射时,location /*** 路径最后是否需要添加 / 结尾需要与实际服务关联的路径一致,实际服务有,就加 /;没有就不加。
通过 apt-get 安装
通过系统安装 /etc/nginx/nginx.conf 主要作用是引入 conf.d/ 和 sites-enabled/ 两个文件夹下的配置。
具体的配置和安装包类似不再介绍。不过有几点需要注意:
- 由于引入顺序的不同,好像 sites-enabled/ 的配置会覆盖 conf.d/;同时由于 sites-enabled/default 中整体监听了 80 端口,可能造成 conf.d/ 中的配置无效。
- 由于在 /etc/nginx/nginx.conf 中的 include 的操作已经在 http {} 中,所以 conf.d/ 和 sites-enabled/ 中的配置直接应该从 server {} 开始即可。
server {
listen 80;
server_name 127.0.0.1;
location / {
proxy_pass http://127.0.0.1:8051/api;
}
}
操作命令
- nginx -v:查看版本信息
- nginx -t:检查当前配置是否合法
- nginx:启动 nginx
- nginx -s reload|reopen|stop|quit:重新加载配置|重启|停止|退出 nginx