老男孩教育专注IT教育10余年,只培养IT技术精英

全国免费咨询电话(渠道合作):400-609-2893

【linux云计算SRE课程】nginx 虚拟主机介绍与配置(二)!

老男孩IT教育

行业新闻

2022年11月23日 14:52

本篇文章,接着为大家介绍“nginx 虚拟主机介绍与配置”的相关知识,如果没有看过之前的文章,建议大家在阅读这篇文章之前,先阅读一下这篇文章。

  本篇文章,接着为大家介绍“nginx 虚拟主机介绍与配置”的相关知识,如果没有看过之前的文章,建议大家在阅读这篇文章之前,先阅读一下这篇文章:

  【linux运维培训】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等技术,课堂效率高、内容丰富全面,由浅入深,循序渐进,帮助学员稳扎稳打,夯实基础,在有限的时间内帮助学员高效提升,成为符合企业需求的技术型人才。

本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。