nginx代理本地静态文件
简单来说,nginx是一个代理服务器,他可以帮助我们实现http代理、反向代理(客户端向服务端发起请求是正向代理,服务端处理请求返回给客户端就是反向代理)、负载均衡等,最基础的就是项目用它来代理到服务端的本地文件。
1、nginx 安装及启动(mac为例)
nginx原理和机制可见:nginx机制介绍(有点晦涩,界面不好看)、nginx入门介绍-简书系列文章(言简意赅)
nginx下载安装,分为mac和windows。
mac可见:mac下安装nginx windows可见(未亲测):win下安装nginx
以mac为例,首先我们需要安装homebrew
,这是macOS缺失的软件包管理器,具体可查看homebrew文档
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
然后,用brew安装nginx
brew install nginx
可使用 nginx -v测试是否安装好,然后启动
nginx
打开浏览器访问:localhost:8080,会看到nginx的welcome首页,表示nginx已安装并启动
关闭nginx也很简单,执行
nginx -s stop
2、nginx配置
nginx.conf文件通常是安装在/usr/local/etc/nginx/nginx.conf目录下,基本我们对nginx的配置都在这个文件中进行,关于这个文件配置的构成,可见参考文档
可能用到的基本操作命令
nginx -v #查看nginx版本及基本配置
nginx -t #测试nginx.conf配置是否有效
cat nginx.conf # 查看nginx.conf文件
vim nginx.conf # 编辑conf文件 i 进入insert模式
:wq # 保存并退出
nginx -s reload # 重新加载配置文件
nginx -s reopen # 重新加载日志
nginx -s stop # 停止 nginx
配置本地web应用,参考如下nginx.conf配置文件(示例)
# 全局块,Nginx 服务器处理并发任务数
worker_processes 1;
# events块,这里设置的是每个 work process 支持的最大连接数为 1024
events {
worker_connections 1024;
}
# 主要配置,功能
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
// 这是自带的server配置,代理了安装nginx时自带的html文件
server {
listen 8080; # 监听端口
server_name localhost;
location / {
root html; # 设置本地网络文件夹路径
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# 每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。
#这里可将监听的端口、服务名,代理到location中的本地文件
server {
listen 8085; # 监听端口
server_name localhost;
# location也可以配置多个
location / {
root /Users/liuliu/Desktop/prd-app; # 设置你本地要代理的文件夹路径
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
include servers/*;
}
配置完文件之后,本地测试一下nginx -t
,没问题的话然后启动nginx -s reload
,访问localhost:8085,则可以看到对应的页面了
这里针对最常用的server配置单独说一下
以上为代理本地文件,那对于服务器上的文件,指定域名,要怎么配置呢?参考菜鸟配置详解、范例
server {
listen 80; # 对域名,默认配置为80端口
server_name test.nginx.com; # 域名
location / { # locatino块配置请求的路由,以及各种页面的处理情况
proxy_pass http://localhost:13626/; #请求转向localhost定义的服务器列表
}
}