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:<端口>; #指定不同的端口

}

相关推荐
勤奋的凯尔森同学1 小时前
webmin配置终端显示样式,模仿UbuntuDesktop终端
linux·运维·服务器·ubuntu·webmin
技术小齐5 小时前
网络运维学习笔记 016网工初级(HCIA-Datacom与CCNA-EI)PPP点对点协议和PPPoE以太网上的点对点协议(此处只讲华为)
运维·网络·学习
ITPUB-微风6 小时前
Service Mesh在爱奇艺的落地实践:架构、运维与扩展
运维·架构·service_mesh
落幕6 小时前
C语言-进程
linux·运维·服务器
chenbin5206 小时前
Jenkins 自动构建Job
运维·jenkins
java 凯6 小时前
Jenkins插件管理切换国内源地址
运维·jenkins
AI服务老曹6 小时前
运用先进的智能算法和优化模型,进行科学合理调度的智慧园区开源了
运维·人工智能·安全·开源·音视频
sszdzq8 小时前
Docker
运维·docker·容器
book01218 小时前
MySql数据库运维学习笔记
运维·数据库·mysql
bugtraq20219 小时前
XiaoMi Mi5(gemini) 刷入Ubuntu Touch 16.04——安卓手机刷入Linux
linux·运维·ubuntu