我是靠谱客的博主 年轻野狼,最近开发中收集的这篇文章主要介绍Nginx基本配置(初级)(一)nginx安装(二)nginx配置使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • (一)nginx安装
    • (1)安装前置依赖(以CentOS为例)
    • (2)nginx相关命令
  • (二)nginx配置使用
    • (1)配置文件说明
    • (2)配置静态Web服务
    • (3)配置动静分离项目
    • (4)防盗链配置
    • (5)下载限速
    • (6)IP黑白名单
    • (7)日志配置

(一)nginx安装

(1)安装前置依赖(以CentOS为例)

  • 关闭防火墙

systemctl stop firewalld.service #停⽌firewall
systemctl disable firewalld.service #禁⽌firewall开机启动

  • 安装 gcc

yum install gcc-c++

  • 安装 PCRE pcre-devel

yum install -y pcre pcre-devel

  • 安装 zlib

yum install -y zlib zlib-devel

  • 安装 OpenSSL

yum install -y openssl openssl-devel

  • 下载nginx的tar包,下载地址:https://nginx.org/en/download.html
tar -xvzf nginx-1.16.1.tar.gz
cd nginx-1.16.1
./configure
make install
#查看安装目录
whereis nginx
  • 配置ssl模块,用于Https服务(可选),进入nginx下载后的解压目录(不是安装目录)
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make
#把nginx下载后的解压目录中objs目录下的新的/nginx替换安装目录中的nginx文件
cp /home/xxx/xxx/nginx/objs/nginx /usr/local/nginx/sbin
  • 查看配置信息
#进入nginx安装目录 /usr/local/nginx/sbin 查看版本
cd /usr/local/nginx/sbin
./nginx -V

在这里插入图片描述

(2)nginx相关命令

cd /usr/local/nginx/sbin/
./nginx
./nginx -s stop #关闭nginx服务
./nginx -s quit
./nginx -s reload #重新加载配置文件,热重启
./nginx -V #查看版本
./nginx -t #检查配置文件
  • 验证安装是否成功
    在这里插入图片描述

(二)nginx配置使用

(1)配置文件说明

  • Nginx配置,在/usr/local/nginx/conf下的nginx.conf
#Nginx用户及组:用户(user),组(nobody),window下不指定
#user nobody;
worker_processes 1; #工作进程:根据硬件调整配置,通常等于CPU数量,或者CPU数量*2
#错误日志存放路径
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid; #进程存放路径。
events {
	#每个工作进程的最大连接数量
	#与worker_processes配合使用,不能超过cpu资源100%
	#理论上最大连接数=worker_processes*worker_connections
	worker_connections 1024;
	keepalive_timeout 60; #keepalive超时时间
}
#设定http服务器
http {
	include mime.types; #文件扩展名与文件类型映射表
	default_type application/octet-stream; #默认文件类型
	#默认编码
	#charset utf-8;
	
	#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指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on
	sendfile on;
	
	#开启目录列表访问,合适下载服务器,默认关闭。
	autoindex on;
	
	#该指令必须在sendfile打开的状态下才会生效,主要是用来提升网络包的传输'效率'
	#tcp_nopush on;
	
	keepalive_timeout 65; #长连接超时时间,单位是秒
	#gzip on; #开启gzip压缩输出
	
	#虚拟主机的配置,可配置多个
	server {
		listen 80;
		server_name localhost; #多个域名用空格隔开
		location / {
			#可配置在 server与location中,基于root路径+url中路径去寻找指定文件。
			root html;
			index index.html index.htm;
		}
		error_page 500 502 503 504 /50x.html;
		location = /50x.html {
			root html;
		}
	}

	server {
		listen 8080;
		server_name localhost;
		location /tomcat {
			root html;
			index index.html index.htm;
		}
	}
}
  • 说明
配置块属性
例如:events、http、server、location、upstream例如:worker_processes、worker_connections、include、listen
使用 { } 包括对应属性属性名 与 属性值 用 空格 隔开,属性值可以有多个,同样使用 空格 隔开

(2)配置静态Web服务

  • 创建站点目录
mkdir -p /home/xxx/xxx/web/app1
  • 放入静态html文件
  • 配置nginx.conf
#添加一个server,监听8081端口
server {
	listen 8081;
	server_name localhost;
	location /project1 {
		#root /home/xxx/xxx/web/app1;
		alias /home/xxx/xxx/web/app1;
		index index.html index.htm;
	}
	error_page 500 502 503 504 /50x.html;
	location = /50x.html {
		root html;
	}
}

root与alias的区别: 当访问http://127.0.0.1:8081/project1/index.html

  • root:基于root指定的文件路径(即:/home/xxx/xxx/web/app1)+ location后url路径(即:添加路径/project1),寻找静态网页,最终寻址为:/home/xxx/xxx/web/app1/project1/index.html
  • alias:基于alias指定的文件路径(即:/home/xxx/xxx/web/app1)+剔除location后url路径(即:剔除路径/project1)的最终寻址为:/home/xxx/xxx/web/app1/index.html

(3)配置动静分离项目

  • 创建静态资源目录:
mkdir -p /home/xxx/xxx/static
  • 普通配置:
server {
	listen 8081;
	server_name localhost;
	
	location / {
		root /home/xxx/xxx/web/app1;
		index index.html index.htm;
	}

	location /static {
		alias /home/xxx/xxx/static;
	}
}
  • 基于正则配置:
server {
	listen 8081;
	server_name localhost;
	
	location /project1 {
		alias /home/xxx/xxx/web/app1;
		index index.html index.htm;
	} 
	
	location ~*.(gif|jpg|png|css|js)$ {
		#expires 30d;
		root /home/xxx/xxx;
	}
}

(4)防盗链配置

server {
	listen 8081;
	server_name localhost;
	
	location / {
		root /home/xxx/xxx/web/app1;
		index index.html index.htm;
	}
	
	location ~*.(gif|jpg|png|css|js)$ {
		#expires 30d;
		valid_referers 192.168.100.100;
		if ($invalid_referer) {
			#return 403;
			rewrite ^/ http://ww4.sinaimg.cn/bmiddle/051bbed1gw1egjc4xl7srj20cm08aaa6.jpg;
		}
		root /home/xxx/xxx;
	}
}

(5)下载限速

location /download {
	limit_rate 1m; #限制下载速度1m/s
	limit_conn addr 1; #连接数量
	limit_rate_after 30m; #超过30之后在下载
}

(6)IP黑白名单

  • 创建黑名单文件
touch /usr/local/nginx/conf/ip.black
  • 编辑黑名单文件
# 指定黑白名单IP
allow 192.168.100.9;
deny 192.168.100.51;

#开放指定IP网段
allow 192.168.0.0/24;
  • 编辑nginx.conf文件,在http配置块中引入黑名单配置文件
http {
	include mime.types;
	include ip.black; #引入黑名单配置文件
	default_type application/octet-stream;
	...
	server {
		...
	}
}

(7)日志配置

  • 编辑nginx.conf配置文件,放开 log_formataccess_log 注释
http {
	...
	#“main”为日志格式的名称
	log_format main '$remote_addr - $remote_user [$time_local] "$request" '

					 '$status $body_bytes_sent "$http_referer" '
					 '"$http_user_agent" "$http_x_forwarded_for"';
	
	#日志写入nginx根目录下logs/access.log文件,默认使用“main”日志格式,也可以自定义格式
	access_log logs/access.log main;

	...
	
	server {
		
		...
		
	}
}
  • 日志参数列表
参数名称参数说明
$remote_addr客户端的ip地址(代理服务器,显示代理服务ip)
$remote_user记录远程客户端的用户名称(一般为“-”)
$time_local记录访问时间和时区
$request记录请求的url以及请求方法
$status响应状态码
$body_bytes_sent给客户端发送的文件主体内容字节数
$http_referer记录用户从哪个链接访问过来的
$http_user_agent用户所使用的代理(一般为浏览器)
$http_x_forwarded_for通过代理服务器来记录客户端的ip地址

最后

以上就是年轻野狼为你收集整理的Nginx基本配置(初级)(一)nginx安装(二)nginx配置使用的全部内容,希望文章能够帮你解决Nginx基本配置(初级)(一)nginx安装(二)nginx配置使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(79)

评论列表共有 0 条评论

立即
投稿
返回
顶部