【linux云计算SRE课程】nginx 虚拟主机介绍与配置(二)!
老男孩IT教育
行业新闻
2022年11月23日 14:52
本篇文章,接着为大家介绍“nginx 虚拟主机介绍与配置”的相关知识,如果没有看过之前的文章,建议大家在阅读这篇文章之前,先阅读一下这篇文章。
本篇文章,接着为大家介绍“nginx 虚拟主机介绍与配置”的相关知识,如果没有看过之前的文章,建议大家在阅读这篇文章之前,先阅读一下这篇文章:
| bbs实例
利用普通用户权限将不同业务进行彻底分离管理
1)配置nginx配置文件
# ls -ld /home/bbs
drwx------ 5 blog blog 114 7月 15 16:29 /home/blog
# su - bbs
$ tree
.
├── conf
│ ├── extra
│ │ └── 01_www.etiantian.org.conf
│ └── nginx.conf
├── html
│ ├── 50x.html
│ └── index.html
└── logs
├── access.log
├── error.log
└── nginx.pid
主配置(注意路径)
$ cat /home/bbs/conf/nginx.conf
user blog;
worker_processes 1;
events {
worker_connections 1024;
}
error_log /home/bbs/logs/error.log warn;
pid /home/bbs/logs/nginx.pid;
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
include /home/bbs/conf/extra/*.conf;
}
虚拟主机配置(注意路径)
$ vim /home/bbs/conf/extra/01_www.etiantian.org.conf
server {
listen 8082;
server_name www.etiantian.org;
location / {
root /home/bbs/html;
index index.html index.htm;
}
access_log /home/bbs/logs/access.log main;
}
$ cat /home/bbs/html/index.html
bbs
2)检查语法
$ /application/nginx/sbin/nginx -c /home/bbs/conf/nginx.conf -t
nginx: [alert] could not open error log file: open() "/application/nginx-1.20.1//logs/error.log" failed (13: Permission denied)
2021/07/15 16:21:10 [warn] 1702#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /home/bbs/conf/nginx.conf:1
nginx: the configuration file /home/bbs/conf/nginx.conf syntax is ok
nginx: configuration file /home/bbs/conf/nginx.conf test is successful
特别提示:[warn] [alert] 并非错误,可以忽略
3)启动并检查
$ /application/nginx/sbin/nginx -c /home/bbs/conf/nginx.conf &>/dev/null
$ lsof -i :8082
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1705 bbs 5u IPv4 27729 0t0 TCP *:tproxy (LISTEN)
nginx 1706 bbs 5u IPv4 27729 0t0 TCP *:tproxy (LISTEN)
4)配置/etc/hosts解析,并访问
Nginx常用模块
| 常用模块介绍
在生产环境中,配置、调整及优化Nginx软件,主要就是根据这些模块的功能修改相应的参数来实现的
通过官方地址可以查看到上述及更多模块的详细使用帮助,地址如下:
http://nginx.org/en/docs/
https://www.nginx.com/resources/wiki/modules/index.html
| 查看Nginx加载的模块
nginx -V
| ngx_http_access_module模块
访问控制模块,用来控制网站用户对Nginx的访问
location / {
allow 192.168.56.128/24; # 允许访问指定的网络或地址
deny all; # 拒绝对指定网络或地址的访问
}
| ngx_http_gzip_module模块
对Nginx返回的数据压缩,属于性能优化模块
location / {
gzip on; # 开启gzip压缩
gzip_comp_level 5; # 指定gzip压缩级别,级别范围为1-9
gzip_types text/plain application/javascript text/css image/png; # 指定过滤的MIME类型
gzip_proxied any; # 为所有代理请求压缩
gzip_http_version 1.1; # 指定支持http协议1.1版本
gzip_min_length 1000; # 压缩的响应的最小长度.以"Content-Length"为准进行比较
}
| ngx_http_fastcgi_module模块
fastcgi模块和动态应用相关的模块,例如PHP
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000; # 将请求转给9000端口的应用程序处理
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 告诉php我们需要被解析的文件在哪个目录,是哪个文件
include fastcgi_params;
}
| ngx_http_proxy_module代理模块
proxy代理模块
location / {
proxy_pass http://192.168.56.130; # 将访问请求后抛给 http://192.168.56.130
proxy_set_header Host $http_host;
}
| ngx_http_upstream_module模块
负载均衡模块,可以实现网站的负载均衡功能及节点的健康检查
ip 地址可以被upstream的别名替代
upstream blog { # blog为自定义的别名,做proxy代理可以用它替代IP地址
server 10.0.0.130 weight=1; # 权重,1为最大,优先访问权重大的服务器
server 10.0.0.128:81 weight=2;
}
| ngx_http_limit_conn_module模块
限制用户并发连接数及请求数模块
location / {
limit_conn addr 1; # 限制并发连接为1
#限制下载速度
limit_rate_after 10m; # 下载达到10m,开始限速
limit_rate 200k; # 限制速度为200K
}
| ngx_http_log_module模块
访问日志模块,以指定的格式记录Nginx客户访问日志等信息
注意:
如果Nginx位于负载均衡器,nginx反向代理之后, web服务器无法直接获取到客 户端真实的IP地址
$remote_addr获取的是反向代理的IP地址
反向代理服务器在转发请求的http头信息中增加X-Forwarded-For信息,用来记录客户端IP地址和客户端请求的服务器地址
#配置语法: 包括: error.log access.log
Syntax: log_format name [escape=default|json] string ...;
Default: log_format combined "...";
Context: http
默认Nginx定义语法格式如下
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
Nginx日志格式中常用的变量
| ngx_http_autoindex_module模块
以目录的形式呈现文件内容,点击可深入浏览或下载
location / {
autoindex on; #启用目录列表功能
}
| ngx_http_auth_basic_module模块
Web认证模块,设置Web用户通过账号密码访问Nginx
location / {
auth_basic "oldboyedu Auth access";
auth_basic_user_file /etc/nginx/auth_pass; # 密码存放文件
}
密码文件配置
name1:password1
name2:password2
| ngx_http_stub_status_module模块
记录Nginx基本访问状态信息等的模块
密码文件配置
location / {
stub_status;
}
状态信息说明:
老男孩教育Linux运维云计算课程汇集了虚拟化、云计算、安全攻防、Python开发、SRE等技术,课堂效率高、内容丰富全面,由浅入深,循序渐进,帮助学员稳扎稳打,夯实基础,在有限的时间内帮助学员高效提升,成为符合企业需求的技术型人才。
