nginx 端口域名IP+其余配置

虚拟主机

Nginx配置虚拟主机有如下三种方式:
方式一、基于主机多IP方式
方式二、基于端口的配置方式
方式三、基于多个hosts名称方式(多域名方式)

多IP虚拟主机

image-20240527133110413

# 添加虚拟IP
ip addr add 10.0.0.11/24 dev eth0
ip addr add 10.0.0.12/24 dev eth0
# 查看ip
[root@web01 code]# ip a
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
group default qlen 1000
link/ether 00:0c:29:1d:4d:9a brd ff:ff:ff:ff:ff:ff
inet 10.0.0.7/24 brd 10.0.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet 10.0.0.11/24 scope global secondary eth0
valid_lft forever preferred_lft forever
inet 10.0.0.12/24 scope global secondary eth0
valid_lft forever preferred_lft forever

## 编写基于ip访问的配置文件
vim /etc/nginx/conf.d/7.conf
server{
	listen 80;
	server_name 10.0.0.7;
	root /7;
	index index.html;
}
vim /etc/nginx/conf.d/11.conf
server{
	listen 80;
	server_name 10.0.0.11;
	root /11;
	index index.html;
}
vim /etc/nginx/conf.d/12.conf
server{
	listen 80;
	server_name 10.0.0.12;
	root /12;
index index.html;
}

# 检测nginx语法
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# 准备站点目录
[root@web01 conf.d]# mkdir /7
[root@web01 conf.d]# mkdir /11
[root@web01 conf.d]# mkdir /12
# 准备三个索引文件
[root@web01 conf.d]# echo 7 > /7/index.html
[root@web01 conf.d]# echo 11 > /11/index.html
[root@web01 conf.d]# echo 12 > /12/index.html
# 重启nginx
systemctl restart nginx
systemctl reload nginx
# 浏览器访问
10.0.0.7  
10.0.0.11
10.0.0.12

多端口的配置方式

# 编辑配置文件 修改器端口
vim /etc/nginx/conf.d/1.conf
server{
	listen 80;
	server_name 10.0.0.7;
	root /7;
	index index.html;
}

vim /etc/nginx/conf.d/2.conf
server{
	listen 90;
	server_name 10.0.0.7;
	root /11;
	index index.html;
}
vim /etc/nginx/conf.d/3.conf
server{
	listen 8080;
	server_name 10.0.0.7;
	root /12;
	index index.html;
}

# 检测语法
nginx -t

# 重启nginx
systemctl restart nginx

# 检测端口
[root@web01 conf.d]# netstat -lntup | grep 80
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 20935/nginx: master
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 20935/nginx: master
[root@web01 conf.d]# netstat -lntup | grep 90
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 9028/php-fpm: maste
tcp 0 0 0.0.0.0:90 0.0.0.0:* LISTEN 20935/nginx: master
[root@web01 conf.d]# netstat -lntup | grep 8080
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 20935/nginx: master


# 修改索引文件
[root@web01 conf.d]# echo 90 > /11/index.html
[root@web01 conf.d]# echo 8080 > /12/index.html

# 浏览器访问
10.0.0.7
10.0.0.7:90
10.0.0.7:8080
# 注意点启动的端口范围1-65535
# 注意点 启动端口不要和本地现在启动的端口冲突
比如 3306 9000 22

多域名模式

# 编写配置文件
vim /etc/nginx/conf.d/1.conf
server{
	listen 80;
	server_name 1.hh.com;
	root /7;
	index index.html;
}
vim /etc/nginx/conf.d/2.conf
server{
	listen 80;
	server_name 2.hh.com;
	root /11;
	index index.html;
}
vim /etc/nginx/conf.d/3.conf
server{
	listen 80;
	server_name 3.hh.com;
	root /12;
	index index.html;
}
# 检测nginx语法
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

# 重启nginx
systemctl restart nginx
# 本地DNS解析
10.0.0.7 1.hh.com 2.hh.com 3.hh.com

## 修改windos域名
(C:\Windows\System32\drivers\etc\hosts

# 浏览器访问
http://1.hh.com/
http://2.hh.com/
http://3.hh.com/

nginx模块

在官网(nginx.org)的 右侧的documentation(评注)下

image-20240527134017358

(index.html)目录索引模块

# 先准备nginx网页配置
vim /etc/nginx/conf.d/test.conf
server{
	listen 80;
	server_name 10.0.0.7;
	root /test;
	index index.html;
}
# 创建站点目录
mkdir /test
# 准备索引文件
[root@web01 conf.d]# echo test > /test/index.html
[root@web01 conf.d]# cat /test/index.html
test
# 检测nginx语法
nginx -t
# 重启nginx
systemctl restart nginx
# 浏览器访问
10.0.0.7

image-20240527134158117

(autoindex)配置目录索引模块

当 ngx_http_index_module 模块找不到索引文件时,通常会将请求传递给
ngx_http_autoindex_module 模块。
Syntax: autoindex on | off;
Default:
autoindex off;
Context: http, server, location

off 显示文件的大概大小
on 显示文件的具体大小

# 修改配置文件 加上了autoindex模块
server{
	listen 80;
	server_name 10.0.0.7;
		location / {
		root /test;
		index index.html;
		autoindex on;
		}
}
# 检查语法
nginx -t
# 重启nginx
systemctl restart nginx
# 找不到索引文件
# 在你的站点目录下不能有index.html
mv /test/index.html /opt
# 访问10.0.0.7
10.0.0.7

image-20240527134423448

(autoindex_format)页面显示格式

Syntax: autoindex_format html | xml | json | jsonp;
Default:
autoindex_format html;
Context: http, server, location
# 提供了html格式 xml格式     (json格式 jsonp格式)

# 修改配置文件
## xml
server{
	listen 80;
	server_name 10.0.0.7;
		location / {
		root /test;
		index index.html;  # (目录下不能有index.html)
		autoindex on;
		autoindex_exact_size on;
		autoindex_format xml;
	}
}
# 检测语法
nginx -t
# 重启nginx
systemctl restart nginx
# 访问页面
10.0.0.7

image-20240527134652446

(autoindex_localtime)时间显示模式

Syntax: autoindex_localtime on | off;
Default:
autoindex_localtime off;
Context: http, server, location
on 现实的是找点目录下文件的属性时间
off 显示的是格林威治时间

# 编辑配置文件
server{
	listen 80;
	server_name 10.0.0.7;
		location / {
		root /test;
		index index.html; #(不能存在index.html)
		autoindex on;    
		autoindex_exact_size on;
		autoindex_format html;
		autoindex_localtime on;
		}
}
# 检测语法
nginx -t
# 重启nginx
systemctl restart nginx
# 访问浏览器
10.0.0.7

image-20240527134937846

image-20240527134943820

(stub_status)nginx状态模块

server{
	listen 80;
	server_name 10.0.0.7;
		location / {
		root /test;
		index index.html;
		autoindex on;
		autoindex_exact_size on;
		autoindex_format html;
		autoindex_localtime on;
		}
		location = /aaa {  ## 在10.0.0.7/aaa   指定这个
		stub_status;    ## 开始的关键
		}
}
# nginx检测语法
nginx -t
# 重启nginx
systemctl restart nginx
# 访问
10.0.0.7/aaa



Active connections: 2 		  # 当前活动的连接数
accepts 					 # 当前总的连接数 tcp 4
handled 					# 成功的连接数数 4
requests 					# 总的http的请求书数目 51
4 4 51
Reading: 0 					# 请求
Writing: 1 					# 响应
Waiting: 1 					# 等待的请求数

一次tcp请求里面 可以发起多次http的请求
keepalive_timeout 0; 关闭了长连接
keepalive_timeout 65; 65s内网页没有收到请求书就断开tcp连接

image-20240527135208819

(auth_basic)用户的访问控制

location / {
	auth_basic 			"closed site";
	auth_basic_user_file conf/htpasswd;
}
Syntax: auth_basic string | off;
Default:
auth_basic off;
Context: http, server, location, limit_except


# 安装htpasswd
yum install -y httpd
# 创建认证相关的目录
mkdir /etc/nginx/auth
# 创建密码文件
htpasswd -b -c /etc/nginx/auth/xxx.auth xxx 123
-b # 允许命令行输入密码
-c # 创建一个新文件
# 查看密码文件
[root@web01 auth]# cat xxx.auth
xxx:$apr1$LYCDPF82$dFTfxcThQDnQficauLgZ9.
# 修改配置文件
server{
	listen 80;
	server_name 10.0.0.7;
	root /test;
	index index.html;
		location = /aaa {
			stub_status;
		 	auth_basic "input your username & password";
			auth_basic_user_file /etc/nginx/auth/xxx.auth;
		}
}
# 检测nginx
nginx -t
# 重启nginx
systemctl restart nginx
# 浏览器访问
10.0.0.7/aaa

(syntax)用户访问限制

# 用户访问限制模块
Syntax: allow address | CIDR | unix: | all;
Default: —
Context: http, server, location, limit_except
Syntax: deny address | CIDR | unix: | all;
Default: —
Context: http, server, location, limit_except
10.0.0.0/24 255.255.255.0
10.0.0.0/16 255.255.0.0
# 就允许10.0.0.9ip访问 其他拒绝所有
server{
	listen 80;
	server_name _;
	root /test;
	index index.html;
	autoindex on;
	autoindex_exact_size off;
	autoindex_localtime on;
	allow 10.0.0.9;  #(允许)
	deny all;		 #(拒绝)
}