Nginx入门
这篇教程主要讲解的是如果启用和停止 nginx ,和重新加载配置,描述配置文件的基本结构和怎样搭建一个 nginx 静态服务器,怎样配置 nginx 作为一个代理服务器来。
参考
- http://nginx.org/en/docs/windows.html
- http://nginx.org/en/docs/beginners_guide.html
- https://www.v2ex.com/t/348342
安装nginx
先安装 Nginx for Windows 点击这里下载,下面的例子是将下载的压缩包接到C盘根目录
cd c:\
unzip nginx-1.15.7.zip
cd nginx-1.15.7
start nginx
执行命令:tasklist 可以查看到Nginx的进程
C:\nginx-1.15.7>tasklist /fi "imagename eq nginx.exe"
Image Name PID Session Name Session# Mem Usage
=============== ======== ============== ========== ============
nginx.exe 652 Console 0 2 780 K
nginx.exe 1332 Console 0 3 112 K
nginx 有一个主进程和其他子进程。主进程的主要工作是加载和执行配置文件,并且驻留子进程。子进程用来作为实际的请求处理。
如果nginx没有启动成功,可以查看 logs\error.log。
conf/nginx.conf 配置了nginx使用的各种文件路径,上面的例子nginx部署在C:\nginx-1.15.7. 目录下,配置文件中的路径必须采用Unix风格的路径写法。
access_log logs/site.log;
root C:/web/html;
如果, nginx 已经开启,那么它就可以通过使用 -s 参数的可执行命令控制。使用下列格式:
nginx -s stop 快速关闭
nginx -s quit 等待处理完成后关闭
nginx -s reload 重新加载配置文件,相当于重启
nginx -s reopen 重新打开日志文件
配置文件结构
nginx 是由一些模块组成,我们一般在配置文件中使用一些具体的指令来控制它们。指令被分为简单指令和块级命令。一个简单的指令是由名字和参数组成,中间用空格分开,并以分号结尾。例如:
// 简单指令
root /data/www;
块级指令和简单指令一样有着类似的结构,但是末尾不是分号而是用 {
和 }
大括号包裹的额外指令集。如果一个块级指令的大括号里有其他指令,则它被叫做一个上下文(比如:events,http,server,和 location)。在配置文件中,没有放在任何上下文中的指令都是处在主上下文中。events 和 http 的指令是放在主上下文中,server 放在 http 中, location 放在 server 中。
以 # 开头的行,会被当做注释。
# this is a comment
events {
worker_connections 4096; ## Default: 1024
}
http {
server {
listen 80;
server_name domain1.com www.domain1.com;
access_log logs/domain1.access.log main;
root html;
}
}
静态服务器
修改nginx.conf,在http节点下 增加如下 代码:
server{
listen 80; #监听端口,基于IP配置的时候变更此处,比如192.168.1.100:8080;
server_name demo.com; #主机域名,实际项目发布的话,填公网上的域名,本地部署的话,可以在C:\Windows\System32\drivers\etc\hosts文件中添加IP和域名的映射
location / { #映射解析,/代表根路径,此处解析还有正则表达式的解析方式,具体请参考http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_core_module.html#location
root E:\git.demo\htmlsample-master; #工程所在路径
index index.html index.htm; #首页(默认页)
}
}
确保上面的目录存在,并且新建一些文件,重启nginx服务 nginx -s reload ,打开浏览器 查看 输入 demo.com

搭建简易的代理服务
server{
listen 80;
server_name refine.com;
location / {
proxy_pass http://frame.apps.com;
index index.html index.htm; #首页(默认页)
}
location /app1 {
rewrite ^/app1/(.*)$ /S1 break;
proxy_pass http://app1.apps.com;
index index.html index.htm; #首页(默认页)
}
location /app2 {
rewrite ^/app2/(.*)$ /S1 break;
proxy_pass http://app2.apps.com;
index index.html index.htm; #首页(默认页)
}
}
