文章目录
- 前言
- 一、下载安装
- 二、使用
- windows 使用
- 开启nginx
- 关闭nginx
- 查看端口号使用情况
- 脚本开始Nginx服务
- Mac使用
- 开启nginx
- 关闭nginx
- 重新加载nginx
- 查看Nginx配置文件
- 三、常用配置(持续更新)
- 1、设置端口号和名称
- 2、设置指向资源路径
- 3、使用 try_files 解决无法找到文件情况(404)
- 4、接口代理转发
- 5、设置对应错误码访问路径
- 6、开启压缩模式
- 7、开启多个服务
- 8、负载均衡配置
- 9、上传文件及上传时间配置
- 10、配置目录显示
- 总结
前言
- 什么是nginx?
Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,
并且cpu、内存等资源消耗却非常低,运行非常稳定。 - 应用场景
http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
一、下载安装
二、使用
windows 使用
开启nginx
直接把页面资源放置html文件夹内,然后双击nginx.exe或者使用start nginx
命令开启
关闭nginx
执行下面命令
查看windows任务管理器下Nginx的进程命令:tasklist /fi "imagename eq nginx.exe"
然后执行taskkill /f /t /im nginx.exe
退出进程
或者直接在任务管理器来关闭(右键,选择退出)
查看端口号使用情况
tasklist | findstr "进程id号"
脚本开始Nginx服务
@echo off
rem 如果启动前已经启动nginx并记录下pid文件,会kill指定进程
nginx.exe -s stop
rem 测试配置文件语法正确性
nginx.exe -t -c conf/nginx.conf
rem 显示版本信息
nginx.exe -v
rem 按照指定配置去启动nginx
nginx.exe -c conf/nginx.conf
Mac使用
- 安装
brew install nginx
- 查看 nginx 版本
nginx -v
- 查看nginx安装信息
brew info nginx
打开资源目录文件
open /opt/homebrew/var/www
2然后更新对应文件资源内容
开启nginx
nginx
访问 localhos:8080
关闭nginx
nginx -s stop
or
// 此命令在修改配置后执行不生效
sudo brew services stop nginx
重新加载nginx
nginx -s reload
查看Nginx配置文件
vim /opt/homebrew/etc/nginx/nginx.conf
也可open /opt/homebrew/etc/nginx/
打开文件,使用其他软件打开文件也可以
三、常用配置(持续更新)
1、设置端口号和名称
server {
# 设置端口号,一般设置四位数
listen 8000;
# 设置服务名称为 localhost 访问地址为 localhost:8000 或者是 本机IP:8000
# server_name localhost;
# 设置一些域名、别名等
server_name somename alias another.alias;
...
}
2、设置指向资源路径
可根据实际需求配置对应文件路径
# 指向 html 目录
server {
...
location / {
root html;
...
}
}
# 指向 index/html 目录
server {
...
location / {
root index/html;
...
}
}
3、使用 try_files 解决无法找到文件情况(404)
server {
...
location / {
root /html
# try_files 将尝试你列出的文件并设置内部文件指向
# 即 try_files 依次检测 /index.html , /index.htm , /$uri 是否存在,若不存在则重定向到@router
try_files $uri $uri/ @router;
index index.html index.htm;
gzip_static on;
}
# 对应上面的 @router ,主要原因是路由的路径资源并不是一个真实的路径,所以无法找到具体的文件
# 因此需要rewrite到index.html(即根目录html)中,然后交给路由在处理请求资源
location @router {
rewrite ^.*$ /html/index.html last;
}
}
4、接口代理转发
server {
...
location /api {
# 如果实际接口没有当前代理前缀,需要重写路径
# add_header backendIP $upstream_addr; # 设置响应头显示转发实际地址
# add_header backendCode $upstream_status; # 设置响应头显示转发实际状态码
# rewrite ^/api/?(.*)$ /$1 break;
# 可根据实际情况设置代理请求头
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://170.0.0.0:1757; # 转发地址
# proxy_redirect http://170.0.0.0:1757 ;# 代理重定向
}
}
5、设置对应错误码访问路径
server {
...
# error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
6、开启压缩模式
server {
...
location / {
# root html;
gzip_static on;
}
}
7、开启多个服务
复制多个server,配置不同端口号等即可
server {
listen 8001;
server_name localhost;
...
location / {
...
}
}
server {
listen 8002;
server_name localhost;
...
location / {
...
}
}
8、负载均衡配置
如果一个服务由多个服务器提供,需要把负载分配到不同的服务器处理,需要负载均衡。即代理配置多台服务器
upstream tomcat {
# 可以根据服务器的实际情况调整服务器权重。权重越高分配的请求越多,权重越低,请求越少。默认是都是1
server 172.0.0.0:8001 weight=2;
server 172.0.0.0:8002;
server 172.0.0.0:8003;
}
server {
listen 8001;
server_name localhost;
...
location / {
proxy_pass http://tomcat; # 转发地址
...
}
}
9、上传文件及上传时间配置
在http位置设置以下即可
client_max_body_size 50m; // 限制文件大小
client_header_timeout 5m; // 时间 5分钟
client_body_timeout 5m; 时间 5分钟
proxy_connect_timeout 600s; // 时间 600秒
proxy_read_timeout 10m; // 时间 10分钟
proxy_send_timeout 10m; // 时间 10分钟
keepalive_timeout 65;
10、配置目录显示
location / {
autoindex on;
...
}
总结
# nginx
官方下载地址:[url](http://nginx.org/en/download.html)
[参考](https://cloud.tencent.com/developer/article/1333800)
nginx代理
查看Nginx的版本号:`nginx -V`
启动Nginx:`start nginx`
快速停止或关闭Nginx:`nginx -s stop`
正常停止或关闭Nginx:`nginx -s quit`
配置文件修改重装载命令:`nginx -s reload`
查看端口号占用情况:`tasklist | findstr "进程id号"`
查看windows任务管理器下Nginx的进程命令:`tasklist /fi "imagename eq nginx.exe"`
然后执行 `taskkill /f /t /im nginx.exe`退出进程