Nginx服务配置

一、Nginx服务的主配置文件nginx.conf

vim /usr/local/nginx/conf/nginx.conf

  1. 全局块:全局配置,对全局生效;
  2. events块:配置影响 Nginx 服务器与用户的网络连接;
  3. http块:配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置;
  4. server块:配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块;
  5. location块:用于配置匹配的 uri ;
  6. upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分。

二、配置文件

1、全局配置

vim /usr/local/nginx/conf/nginx.conf

  1. user nobody; #运行用户,若编译时未指定则默认为 nobody
  2. worker_processes 1; #工作进程数量,一般设置为和 CPU 核数一样;设置为auto,nginx将会自己获取这个数值
  3. error_log logs/error.log; #错误日志文件的位置
  4. pid logs/nginx.pid; #PID 文件的位置
  5. worker_rlimit_nofile 65535; #指定 worker 子进程可以打开的最大文件句柄数,默认为1024

2、I/O 事件配置

events {

use epoll; #使用 epoll I/O模型,2.6及以上版本的系统内核,使用epoll模型可以提高性能

worker_connections 65535; #每个 worker 子进程能够处理的最大并发连接数

multi_accept on; #是否一次性将监听到的连接全接收进来,默认为off,关闭时一次接收一条连接

accept_mutex on; #默认为on,开启时表示以串行方式接入新连接,否则将通报给所有worker。这可能会浪费资源并产生不可预计的后果,例如惊群问题

}

设置Nginx最大连接数

注意点:不仅要在全局配置中通过work_rlimit_nofile命令配置进程能打开的文件数,还要在I/O配置中通过worker_connections命令配置一个进程的最大连接数。

首先可以通过ulimit -a 查看系统最大能够打开的文件数量,此时为1024个

vim /etc/security/limits.conf 在其中永久配置

相关配置介绍:

在配置文件中加上软硬限制并重启即可

重启并查看

vim /usr/local/nginx/conf/nginx.conf

工作进程数×进程连接数=Nginx并发数

验证结果

3、http配置

http {
    ##文件扩展名与文件类型映射表
    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"';
    ##访问日志位置
    #access_log  logs/access.log  main;
    ##开启高效的文件传输模式
    sendfile        on;
    ##开启tcp_nopush和tcp_nodelay用于防止网络阻塞
    tcp_nopush     on;
    tcp_nodelay    on;
    ##连接保持超时时间,单位是秒
    #keepalive_timeout  0;
    keepalive_timeout  65;
    ##gzip模块设置,设置是否开启gzip压缩输出
    #gzip  on;

4、Web 服务的监听配置

server {
        ##监听地址及端口
        listen 80; 
        ##站点域名,可以有多个,用空格隔开
        server_name www.kgc.com;
        ##网页的默认字符集
        charset utf-8;
        ##根目录配置
        location / {
            ##网站根目录的位置/usr/local/nginx/html
            root html;
            ##默认首页文件名
            index index.html index.php;
        }
        ##内部错误的反馈页面
        error_page 500 502 503 504 /50x.html;
        ##错误页面配置
        location = /50x.html {
            root html;
        }
    }
}

5、日志格式设定:

remote_addr与http_x_forwarded_for用以记录客户端的ip地址;

$remote_user:用来记录客户端用户名称;

$time_local: 用来记录访问时间与时区;

$request: 用来记录请求的url与http协议;

$status: 用来记录请求状态;成功是200,

$body_bytes_sent :记录发送给客户端文件主体内容大小;

$http_referer:用来记录从哪个页面链接访问过来的;

$http_user_agent:记录客户浏览器的相关信息;

通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。

补充:location常见配置指令,root、alias、proxy_pass

nginx 的 root 和 alias 指定路径的区别

root(根目录)

location /abc {

root /var/www;

}

处理方式: root路径+location路径 http://192.168.80.20/abc/xy101/scj.html --> /var/www/abc/xy101/scj.html
alias(别名目录、虚拟目录)

location /abc {

alias /var/www;

}

处理方式: alias路径替换location路径 http://192.168.80.20/abc/xy101/scj.html --> /var/www/xy101/scj.html

三、 访问状态统计与控制

查看统计配置的相关模块

cat /opt/nginx-1.22.0/auto/options | grep YES #查看 nginx 已安装的所有模块

[root@localhost ~]# cd /opt/
[root@localhost opt]# ls
apache  nginx-1.24.0  nginx-1.24.0.tar.gz  nginx-1.26.1  nginx-1.26.1.tar.gz
[root@localhost opt]# cd nginx-1.26.1/
[root@localhost nginx-1.26.1]# ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  Makefile  man  objs  README  src
[root@localhost nginx-1.26.1]# cd auto/
[root@localhost auto]# ls
cc      endianness  have          headers  init     lib   module   nohave   os       stubs    threads  unix
define  feature     have_headers  include  install  make  modules  options  sources  summary  types
[root@localhost auto]# cat options | grep YES

修改主配置文件,添加访问状态统计模块

  1. cd /usr/local/nginx/conf

  2. cp nginx.conf nginx.conf.bak

vim /usr/local/nginx/conf/nginx.conf

  server {
        listen       80;
        server_name  www.yang.com;
 
        charset utf-8;
 
        #access_log  logs/host.access.log  main;
 
        location / {
            root   html;
            index  index.html index.htm;
        }
        location /status {
            stub_status on;
            access_log off;
        }

重启nginx服务,访问测试

基于授权的访问控制

1、生成用户密码认证文件

yum install -y httpd-tools
htpasswd -c /usr/local/nginx/passwd.db zhangsan
chown nginx /usr/local/nginx/passwd.db
chmod 400 /usr/local/nginx/passwd.db

2 、修改主配置

vim /usr/local/nginx/conf/nginx.conf
 
server {
		location / {
			......
			##添加认证配置##
			auth_basic "secret";				#设置密码提示框文字信息
			auth_basic_user_file /usr/local/nginx/passwd.db;
		}
	}

基于客户端的访问控制

访问控制规则如下:

deny IP/IP 段:拒绝某个 IP 或 IP 段的客户端访问。
allow IP/IP 段:允许某个 IP 或 IP 段的客户端访问。
规则从上往下执行,如匹配则停止,不再往下匹配。

vim /usr/local/nginx/conf/nginx.conf
......
    server {
        location / {
            ......
            ##添加控制规则##
            allow 192.168.73.105;                     #允许访问的客户端 IP
            deny all;                                #拒绝其它IP客户端访问
        }
    }

四、Nginx的虚拟主机设置

1、基于域名的虚拟主机

server {

server_name XXX; #指定不同的域名

}

2、 基于IP的虚拟主机

server {

listen <IP>:端口; #指定不同的IP

}

3、基于端口的虚拟主机

server {

listen IP:<端口>; #指定不同的端口

}

相关推荐
小O_好好学1 小时前
CentOS 7文件系统
linux·运维·centos
哲伦贼稳妥2 小时前
一天认识一个硬件之机房地板
运维·网络·经验分享·其他
苹果醋32 小时前
快速玩转 Mixtral 8x7B MOE大模型!阿里云机器学习 PAI 推出最佳实践
spring boot·nginx·毕业设计·layui·课程设计
john_hjy2 小时前
11. 异步编程
运维·服务器·javascript
x晕x2 小时前
Linux dlsym符号查找疑惑分析
linux·运维·服务器
活跃的煤矿打工人3 小时前
【星海saul随笔】Ubuntu基础知识
linux·运维·ubuntu
tangdou3690986553 小时前
两种方案手把手教你多种服务器使用tinyproxy搭建http代理
运维·后端·自动化运维
北京智和信通3 小时前
云平台和虚拟化智慧运维监控,全面提升故障感知与处置能力
运维·虚拟化·云平台·虚拟机监控
fasewer3 小时前
第五章 linux实战-挖矿 二
linux·运维·服务器
楚灵魈4 小时前
[Linux]从零开始的网站搭建教程
linux·运维·服务器