共计 1532 个字符,预计需要花费 4 分钟才能阅读完成。
安装使用
nginx 是一个反向代理服务器,在 web 开发调试中经常用到,写一个简单的使用说明和总结。
1. 下载
点击官网下载地址 下载对应版本的 nginx 并解压
2. 配置
在解压的目录下找到 conf/nginx.conf 文件添加所需监听和代理的 server
# 项目名称
server {
listen 80;
server_name example.com;// 监听的 host
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_set_header host $host;
proxy_pass http://127.0.0.1:8092; // 要代理的地址
}
}
3. 常用命令
start nginx // 启动 nginx
nginx -s stop // 快速停止 nginx,可能并不保存相关信息
nginx -s quit // 有序的停止 nginx,并保存相关信息
nginx -s reload // 重新载入配置,修改完配置文件后使用此命令重启
原理简析
在说明使用 nginx 的优点之前,先说说另一种常用的调试方案:修改 hosts 文件。修改 host 的原理是:对主机添加特定 dns 解析规则,将指定域名解析至某个特定 ip。例如:
在 hosts 文件里写了这么一行:127.0.0.1 example.com,接下来在浏览器输入 www.example.com 后:
主机检测 hosts 文件发现有对应规则(如果没有对应规则就走正常 dns 解析服务),于是向 IP127.0.0.1:80(默认端口) 发送 http 请求,请求报文上 GET / HTTP/1.1,host:example.com。
如果此时本地 80 端口确实启动了某个服务,则处理该对应的请求。
如果我们正好是在本地的 80 端口运行这个要调试项目,那自然没有问题。但是可能有意外情况:
本地项目不跑在 80 端口
要监听的 host 项目不在 80 端口, 例如一般线上正式环境的项目使用的是 https 协议,请求默认端口就是 443,
此时就需要 nginx 来解决问题,nginx 的作用用一句话描述:将发送至特定 host 的请求转发到指定的代理地址上。举一个实际的例子,首先在 hosts 添加一行 127.0.0.1 construct-courses.pre1.web.nd 后,可以在浏览器看到这样的请求:首先看图上 Grnrral 部分的 remote address 字段,即前文的第一步骤完成,本地的 80 端口接收到一个 http 请求,host 为 construct-courses.pre1.web.nd。接着在 nginx 的配置文件中增加:
server {
listen 80;
server_name construct-courses.pre1.web.nd;
location / {
proxy_set_header host $host;
proxy_pass http://127.0.0.1:8092;
}
}
在 conf 中配置如上图代码并启动 nginx 后,nginx 检查到 server_name construct-courses.pre1.web.nd 接收到了请求,根据匹配规则,将请求转发到指定的 proxy_pass 即 http://127.0.0.1:8092 上。至此,请求 example.com 实际变成了请求 http://127.0.0.1:8092
在本地 8092 端口启动实际项目,就可以发现在浏览器访问 construct-courses.pre1.web.nd 时,运行的正是我们的实际项目
整个过程至此结束
惯例:如果内容有错误的地方欢迎指出(觉得看着不理解不舒服想吐槽也完全没问题);如果有帮助,欢迎点赞和收藏,转载请征得同意后著明出处,如果有问题也欢迎私信交流,主页有邮箱地址