前言:今天给同事看他本地nginx的报错,虽然我也是半吊子,但觉得可能还是配置问题,所以把配置捋了一遍,做个学习记录,也希望能帮到有需要的人,如有错误感谢指出。
文章目录
资源介绍
1、资源下载地址:https://download.csdn.net/download/jinxin740202/13122489
2、目录结构如下:
一、目录结构介绍
conf: 配置文件夹,存放配置文件,下面的配置在此文件夹里面,文件名为nginx.conf
contrib:存放一些实用工具
docs:文档文件夹,存放相关文档
html:页面文件夹,存放一些默认页面,如index, 404, 500等。在我的nginx资源里放的 是打包后的vue项目
logs:日志文件夹,存放一些错误日志或运行日志等其他
temp:临时文件夹,存放临时文件
.bat:批处理命令
二、配置详解
1.nginx中文文档:https://www.nginx.cn/doc/
中文文档里面介绍了详细的模块配置、安装方法、配置实例,分的很详细;
对于刚接触的我们直接看官网可能会比较难找到对应的配置,甚至迷茫,可以先通过看一些别人的总结再来看中文文档可能会没那么头大。
2.nginx location配置语法:https://blog.csdn.net/qq_33862644/article/details/79337348
要能灵活更改配置,还是要了解一下语法配置的规则,推荐一下上面这篇博客,觉得写的很详细,看完之后在看下面的配置和去看中文文档会更加容易上手。
3.nginx.conf配置
配置如下(示例):
#user nobody;
worker_processes 1;#设置值和CPU核心数一值
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#nginx运行启动后就会生成这个标志文件,记录nginx主进程的ID号
#pid logs/nginx.pid;
# events 详解可参考该网址https://blog.csdn.net/u010832551/article/details/85160336
events {
worker_connections 1024;#最大连接数
}
http {
#mime.types:我们要了解浏览器是如何处理内容的。在浏览器中显示的内容有 HTML、有 XML、有 GIF、还有 Flash ……那么,浏览器是如何区分它们,决定什么内容用什么形式来显示呢?答案是 MIME Type,也就是该资源的媒体类型。mime type定义的对应关系来告诉浏览器如何处理服务器传给浏览器的这个文件,是打开还是下载。文件扩展名与文件类型映射表
include mime.types;
default_type application/octet-stream;#nginx默认文件类型
# websocke开启与配置 参考博客:https://blog.csdn.net/u011411069/article/details/98475433
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip on;
# gzip_buffers 4K|8K 缓冲(和硬盘块相当)
gzip_buffers 4 8K;
# gzip_comp_level [1-9] 推荐6,越大压缩的越小
gzip_comp_level 6;
# gzip_disable 正则匹配UA
gzip_min_length 2k;
# gzip_http_version 1.0|1.1;
# gzip_proxied
gzip_types text/plain,application/xml;
# gzip_vary on|off
# 定义一组服务器
upstream jinxin{
hash $remote_addr consistent;
server 192.168.79.57:8080; #请求的服务器端地址
}
#下面是server虚拟主机的配置
server {
listen 8081;#监听端口号
server_name localhost;#域名,填写本机的IP地址eg:192.168.79.69
root html;#站点目录
#charset koi8-r;
#access_log logs/host.access.log main;
#http
location ^~ /api/{
proxy_pass http://jinxin/api/;
}
location ^~ /report/ {
proxy_pass http://jinxin/;
}
#websoket
location ^~ /ws/ {
proxy_pass http://jinxin/;
proxy_set_header Host $host:$server_port;
proxy_http_version 1.1;
proxy_connect_timeout 4s; #配置点1
proxy_read_timeout 600s; #配置点2,如果没效,可以考虑这个时间配置长一点
proxy_send_timeout 12s; #配置点3
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
#nginx 获取到url
#1.找server_name
#2.找locationpipei
如果没有找index默认的文件
如果没有直接404
有的话加上默认的index.* 重新寻找匹配的location
如果有进入执行try_files
3.查找try_files 是否有相应的文件
如果没有直接重定向最后一项
location /cost{
#系统
try_files $uri $uri/ /cost/index.html;
index index.html;
#nginx设置不使用缓存
add_header Cache-Control no-cache;
}
error_page 500 502 503 504 /test.html;
location = /test.html {
root html;
}
}
}
三、使用步骤
1、下载nginx
2、在html文件中放入一些默认页面,我放的就是打包后的vue项目
3、修改配置
(1)、定义一组服务器
upstream jinxin{
hash $remote_addr consistent;
server 192.168.79.57:8080; #请求的服务器端地址
}
(2)、server配置
location ^~ /api/{
proxy_pass http://jinxin/api/;
}
四、总结
try_files $uri $uri/ /cost/index.html;
nginx 获取到url
1.找server_name
2.找location pipei
如果没有找index默认的文件
如果没有直接404
有的话加上默认的index.* 重新寻找匹配的location
如果有进入执行try_files
3.查找try_files 是否有相应的文件
如果没有直接重定向最后一项