Nginx 啥也不晓得 到 基本使用 搞搞震之一

出来工作了差不多一年,还是很菜,就是个只晓得打代码的机器,出来研究点东西记录一哈。。。
正好现在项目用的nginx比较多,自己也来动手做一个。

第一步当然是下载

,—》Nginx官网下载
我这边是windows系统,一般都是选稳定版吧。(不是镜像所以会很慢)在这里插入图片描述
直接解压在这里插入图片描述
第二步启动,直接cmd打开命令行,输入 start nginx 就直接一闪而过,我们再输入 tasklist /fi “imagename eq nginx.exe”
可以查看是否存在该任务。
在这里插入图片描述
启动失败

  1. 也许是端口号被占用,nginx默认80
  2. 存放路径有中文符号*(一般来说,做这行的还是少用中文,毕竟咋咱现在也不用中文打代码。。。)*
  3. 其他的问题可以到 logserrors.log 里面查看。

端口被占用就进入conf里面打开nginx.conf,找到listen,修改后面跟着的端口号,我这边还是默认80。
在这里插入图片描述

改完错误后检查conf文件是否有误 ,在一级安装目录下输入 nginx -t在这里插入图片描述
successful就莫得问题了,如果是fail就得检查是否conf文件的格式啥的有问题。
接下来输入 nginx -s reload,正常的话是不会 有输出,然后打开浏览器输入localhost后面加上你改的端口号。在这里插入图片描述
ok!

~~--------------------------------------------------------------------------

接下来开始按照自己的需求设置一个域名

用来做网站代理,我自己设置nginx.demo.com
server {
#站点监听端口
listen 80;
#站点访问域名
server_name nginx.demo.com;

以后直接访问这个就行了,设置了之后又reload一下nginx,但是莫得反应,搞了很久发现世界上根本莫得这个域名,访问当然是404。。。。

解决应该有两种方法,一直接买一个域名,这样浏览器就能访问到了,可我又菜又不知道买了域名能干嘛,(主要还是支付宝空空),直接在系统的host文件里面写一个域名。
这个host据说是计算机在访问网站时首先会在里面找,找不到再去访问互联网的。
打开host文件 Win+R -> c:\windows\system32\drivers\etc
在这里插入图片描述在这里插入图片描述编辑里面的host文件,就把自定义的域名放进去,跟别的东西用空格隔开就行了。
接下来访问你的域名,应该莫得问题了。

接下来做个负载均衡

打开nginx.conf文件,首先配置一个location

	#代理配置参数
    proxy_connect_timeout 180;
    proxy_send_timeout 180;
    proxy_read_timeout 180;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarder-For $remote_addr;
    
	#location用来匹配同一域名下多个URI的访问规则
    #比如动态资源如何跳转,静态资源如何跳转等
    #location后面跟着的/代表匹配规则
	#反向代理的路径(和upstream绑定),location 后面设置映射的路径
    location / {
        proxy_pass http://balance_service;
		
		#以下是一些反向代理的配置(可选择性配置)
        #proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_connect_timeout 90;          #nginx跟后端服务器连接超时时间(代理连接超时)
        proxy_send_timeout 90;             #后端服务器数据回传时间(代理发送超时)
        proxy_read_timeout 90;             #连接成功后,后端服务器响应时间(代理接收超时)
        proxy_buffer_size 4k;              #设置代理服务器(nginx)保存用户头信息的缓冲区大小
        proxy_buffers 4 32k;               #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
        proxy_busy_buffers_size 64k;       #高负荷下缓冲大小(proxy_buffers*2)
        proxy_temp_file_write_size 64k;    #设定缓存文件夹大小,大于这个值,将从upstream服务器传

        client_max_body_size 10m;          #允许客户端请求的最大单文件字节数
        client_body_buffer_size 128k;      #缓冲区代理缓冲用户端请求的最大字节数
		
		#站点根目录,可以是相对路径,也可以使绝对路径
        root   html;
		#默认主页
        index  index.html index.htm;
		

        #拒绝请求,返回403,一般用于某些目录禁止访问
        #deny all;
        
        #允许请求
        #allow all;
    }

主要是这个: proxy_pass http://balance_service;
其他的具体咋也不知道呀,反正加上去应该会比较牛批吧。
配置一个 http://balance_service相当于一个坐标

#设定负载均衡的服务器列表
#设定实际的服务器列表
upstream balance_service{
    #weigth参数表示权值,权值越高被分配到的几率越大
    server localhost:8080 weight=5;
	server localhost:1130 weight=5;
	server localhost:8011 weight=5;
}

NOTICElocation要放在server里面,这个upstream 放在server外面

balance_service就匹配到了上面写的*http://balance_service
你想配多少个网站里面就放多少个 server 网站地址 weight=(被访问几率大小)

接下来就访问域名,可以在你设置的网站里面随机跳转了。这应该就是什么负载均衡。。。

问题:css,image,js啥的没有加载

出现了这个问题,访问本地的项目不加载这些东西,找了一下资料,发现是因为nginx找不到这些以img,css,js为后缀的文件,所以我们需要主动告知nginx去找到这些文件去加载。
继续在nginx.conf里面编写

	#(js  css gif  是静态资源的后缀,不是文件夹的名字)反向代理的路径下找不到文件,需要单独指定js css文件的访问路径。
	#配置静态资源  解决js css文件无法加载无法访问的问题,注意末尾不能有 /
	location ~ .*\.(js|css|jpg|jpeg|gif|png|ico|pdf|txt)$  {
           proxy_pass http://balance_service;
    }

http://balance_service;就是我们上面设置代理的坐标,让他可以被上面的upstream找到。
这下就可以加载出这些文件了。

**

问题:日志太多。

短短一天时间,我的日志文件就出来了12G,还好我这是在本地哦,要是在线上不得直接炸啦。
logs文件夹里面,一个是access.log,一个是error.log。
首先我们不能让nginx啥都写日志里边。

先优化一下他们记录的东西

	#添加这一行 将不记录这些文件类型
	location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
		expires 30d; 	
		access_log off; 
	}
	
	location ~ .*\.(js|css)?$ {
		expires 12h;
		access_log off;
	}
		
	#这部分原来是没有的,我们只记录访问php文件就可以了。
	location ~ .*\.(html|htm)$ {
		access_log off;
	}

这是access.log,然后轮到error.log

#全局错误日志
error_log  logs/error.log;
#配置等级太低的error会消耗大量的I/O
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

这样子虽然记录的少了,但日积月累还是挺多的,想想就不舒服,我这边就搞个日志分割脚本,其他人说别的操作系统做这个挺方便的,windows系统首先写个bat批处理文件

for /f "tokens=1 delims=/ " %%j in ("%date%") do set d1=%%j
for /f "tokens=2 delims=/ " %%j in ("%date%") do set d2=%%j
for /f "tokens=3 delims=/ " %%j in ("%date%") do set d3=%%j

set backupdir=d:\nginx_logs\%d1%\%d2%\%d3%

mkdir %backupdir%

move c:\nginx-1.16.1\logs\*.log %backupdir%

c:\nginx-1.16.1\nginx -s reload

首先根据当前时间得出年月日;
定义一个backupdir我打算把切割的文件放在D盘的nginx_logs下面,后面分不同的年、月、日存储不同天的日志信息;
mkdir创建文件,
将nginx安装目录下的logs的log文件移到定义的backupdir文件里面
然后在reload一下这个nginx。

在这里插入图片描述
windows系统下的所有程序–》附件—》系统工具—》任务计划程序里边添加一个任务,每天一次就执行,这样就可以分年月日去记录上面的日志文件。


主要做的就是这么多,这样就可以基本使用了,下面是我整个nginx.conf文件,都上了注释,有些是没有亲自去试过的,就莫得在上面提到,但写了可以会提高使用的效率吧。

#user  nobody;

#==工作进程数,一般设置为cpu核心数
worker_processes  1;

#全局错误日志
error_log  logs/error.log;
#配置等级太低的error会消耗大量的I/O
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#PID文件,记录当前启动的nginx的进程ID
pid        logs/nginx.pid;


#工作模式及连接数上限
events {
	#==最大连接数,一般设置为cpu*2048
    worker_connections  1024;
}


#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {

#设定mime类型(邮件支持类型),类型由mime.types文件定义
include       mime.types;
default_type  application/octet-stream;

#设定日志
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';



#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
#必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
sendfile        on;
#tcp_nopush     on;


#==客户端链接超时时间
#keepalive_timeout  0;
keepalive_timeout  65;
tcp_nodelay        on;


#gzip压缩开关
#gzip  on;


#设定负载均衡的服务器列表
#设定实际的服务器列表
upstream balance_service{
    #weigth参数表示权值,权值越高被分配到的几率越大
    server localhost:8080 weight=5;
	server localhost:1130 weight=5;
	server localhost:8011 weight=5;
}


#当配置多个server节点时,默认server names的缓存区大小就不够了,需要手动设置大一点
server_names_hash_bucket_size 1024;


#server表示虚拟主机可以理解为一个站点,可以配置多个server节点搭建多个站点
#每一个请求进来确定使用哪个server由server_name确定
server {
	#站点监听端口
    listen       80;
	#站点访问域名
    server_name  nginx.demo.com;
	
	#首页
    index index.html
	
	#代理配置参数
    proxy_connect_timeout 180;
    proxy_send_timeout 180;
    proxy_read_timeout 180;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarder-For $remote_addr;
	
	
	#location用来匹配同一域名下多个URI的访问规则
    #比如动态资源如何跳转,静态资源如何跳转等
    #location后面跟着的/代表匹配规则
	#反向代理的路径(和upstream绑定),location 后面设置映射的路径
    location / {
        proxy_pass http://balance_service;
		
		#以下是一些反向代理的配置(可选择性配置)
        #proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_connect_timeout 90;          #nginx跟后端服务器连接超时时间(代理连接超时)
        proxy_send_timeout 90;             #后端服务器数据回传时间(代理发送超时)
        proxy_read_timeout 90;             #连接成功后,后端服务器响应时间(代理接收超时)
        proxy_buffer_size 4k;              #设置代理服务器(nginx)保存用户头信息的缓冲区大小
        proxy_buffers 4 32k;               #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
        proxy_busy_buffers_size 64k;       #高负荷下缓冲大小(proxy_buffers*2)
        proxy_temp_file_write_size 64k;    #设定缓存文件夹大小,大于这个值,将从upstream服务器传

        client_max_body_size 10m;          #允许客户端请求的最大单文件字节数
        client_body_buffer_size 128k;      #缓冲区代理缓冲用户端请求的最大字节数
		
		#站点根目录,可以是相对路径,也可以使绝对路径
        root   html;
		#默认主页
        index  index.html index.htm;
		

        #拒绝请求,返回403,一般用于某些目录禁止访问
        #deny all;
        
        #允许请求
        #allow all;
    }
	
	#静态文件,nginx自己处理
    #location ~ ^/(images|javascript|js|css|flash|media|static)/ {
    #    root D:\01_Workspace\Project\github\zp\SpringNotes\spring-security\spring-shiro\src\main\webapp\views;
    #    #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。
    #    expires 30d;
    #}
	
	#设定查看Nginx状态的地址
	location /nginx_status {  
		stub_status  on;  
		allow  192.168.1.83;  
		deny  all;  
		access_log  off;  
	}  
	
	#禁止访问 .htxxx 文件
    location ~ /\.ht {
        deny all;
    }

    charset utf-8;


    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
	
	#(js  css gif  是静态资源的后缀,不是文件夹的名字)反向代理的路径下找不到文件,需要单独指定js css文件的访问路径。
	#配置静态资源  解决js css文件无法加载无法访问的问题,注意末尾不能有 /
	location ~ .*\.(js|css|jpg|jpeg|gif|png|ico|pdf|txt)$  {
           proxy_pass http://balance_service;
    }

			
	#添加这一行 将不记录这些文件类型
	location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
		expires 30d; 	
		access_log off; 
	}
	
	location ~ .*\.(js|css)?$ {
		expires 12h;
		access_log off;
	}
		
	#这部分原来是没有的,我们只记录访问php文件就可以了。
	location ~ .*\.(html|htm)$ {
		access_log off;
	}
}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值