Nginx基础配置

目录

一.nginx 有多种模块

二.Nginx配置文件

三.Nginx优化

1.修改启动的工作进程数(优化)

2.cpu与worker  process 绑定 (优化)

3.PID路径修改

4.修改进程优先级

5.调试工作进程中打开的文件个数

6.服务是否以后台方式运行

7.是否开启master-worker工作模式

四.event事件

五.http设置

1.http部分详细解析

2.mine

3.server下的root

4.构建虚拟主机

4.1基于域名的虚拟主机

4.2基于端口

4.3基于ip地址

5.alias别名

6.location匹配

7.基于四层访问控制模块  access  


一.nginx 有多种模块

  • HttpCoreModule:这是Nginx的核心模块,负责处理HTTP请求和响应。

  • HttpAccessModule:用于配置访问控制规则,允许或拒绝特定的客户端访问。

  • HttpSSLModule:提供SSL和TLS支持,用于配置HTTPS连接和SSL证书。

  • HttpRewriteModule:用于重写URL,可以重定向请求、修改请求参数等。

  • HttpProxyModule:用于设置反向代理,将请求转发给其他服务器(如应用服务器)进行处理。

  • HttpFastCGIModule:支持FastCGI协议,用于与FastCGI进程通信,适用于运行PHP等脚本的情况。

  • HttpGzipModule:用于压缩HTTP响应,减小传输数据的大小,提高网站性能。

  • HttpCacheModule:提供HTTP缓存功能,可以缓存静态内容或动态内容的响应,减轻服务器负载。

  • HttpHeadersMoreModule:允许修改HTTP响应头,添加、删除或修改HTTP头信息。

  • HttpSecurityModule:提供安全相关功能,包括防止恶意请求、限制访问速率等。

二.Nginx配置文件

编译安装主配置文件位置

/apps/nginx/conf

主配置文件格式

main block:主配置段,即全局配置段,对http,mail都有效

#事件驱动相关的配置   同步
event {
 ...
}   
#http/https 协议相关配置段
http {
 ...
}          
#默认配置文件不包括下面两个块
#mail 协议相关配置段
mail {
 ...
}    
#stream 服务器相关配置段
stream {负载均衡
 ...
}

yum安装主配置文件位置

/etc/nginx/nginx.conf

子配置文件: include conf.d/*.conf

三.Nginx优化

1.修改启动的工作进程数(优化)
worker_processes  1;   
#允许的启动工作进程数数量,和你真实的cpu数量有关   1
worker_processes auto;
#如果设置为auto  就是你真实的cpu数量
cd /apps/nginx/conf/
vim nginx.conf 
nginx  -s  reload 
#重载
ps axo pid,cmd,psr,ni|grep nginx
#查看工作进程的数量

2.cpu与worker  process 绑定 (优化)

在 Nginx 配置文件中,worker_cpu_affinity 指令用于控制 worker 进程与 CPU 的亲和性(affinity)关系

worker_cpu_affinity 00000001 00000010;
#绑定到  第一 和 第二块cpu上

3.PID路径修改

vim  /etc/nginx/nginx.conf

4.修改进程优先级
nice的优先级是  -20 到 19

worker_priority 0; 
#工作进程优先级,-20~20(19)
默认优先级为0
ps axo pid,cmd,psr,ni|grep nginx|sort -n
#查看优先级

5.调试工作进程中打开的文件个数

所有worker进程能打开的文件数量上限,包括:Nginx的所有连接(例如与代理服务器的连接等),而不仅仅是与客户端的连接,另一个考虑因素是实际的并发连接数不能超过系统级别的最大打开文件数的限制.最好与ulimit -n 或者limits.conf的值保持一致

先修改主配置文件

vim nginx.conf
添加
worker_rlimit_nofile 65536

再修改系统配置项

临时修改

ulimit -n 60000 
#修改单个进程能打开的最大文件数为 60000
#仅应用于当前会话即不会永久修改限制
ulimit -a 
#显示当前用户的所有资源限制信息

永久修改,修改pam认证模块

vim /etc/security/limits.conf  

reboot重启生效

6.服务是否以后台方式运行

加入     daemon off;  选项

7.是否开启master-worker工作模式
master_process off|on;
#是否开启Nginx的master-worker工作模式,仅用于开发调试场景,默认为on

四.event事件

在Nginx的主配置文件中,events部分用于配置Nginx服务器的事件模块相关参数,控制Nginx服务器在处理连接请求时的行为。

常见的events配置参数:

worker_connections:指定每个工作进程可以同时处理的最大连接数。

multi_accept:指定是否一次接受多个连接。默认情况下,Nginx在每个循环中只接受一个连接,但设置multi_accept为"on"后可以同时接受多个连接。

use:指定Nginx使用的事件模块。常见的事件模块有"epoll"、"kqueue"和"eventport"等。

events {
   worker_connections  65536;  #设置单个工作进程的最大并发连接数
   use epoll;
   #使用epoll事件驱动,Nginx支持众多的事件驱动,
比如:select、poll、epoll,只能设置在events模块中设置。
   accept_mutex on; 
   #on为同一时刻一个请求轮流由work进程处理,而防止被同时唤醒所有worker,
避免多个睡眠进程被唤醒的设置,默认为off,新请求会唤醒所有worker进程,
此过程也称为"惊群",因此nginx刚安装完以后要进行适当的优化。建议设置为on
   multi_accept on; 
   #ON时Nginx服务器的每个工作进程可以同时接受多个新的网络连接,
此指令默认为off,即默认为一个工作进程只能一次接受一个新的网络连接,
打开后几个同时接受多个。建议设置为on
}

五.http设置

1.http部分详细解析

include:引入其他配置文件,通常用于加载 MIME 类型配置文件。

default_type:指定默认的 MIME 类型。

server:定义一个或多个虚拟主机。

listen:指定该虚拟主机监听的端口。

​ server_name:指定域名,用于匹配请求的主机头。

​ root:指定虚拟主机的根目录。

​ location:用于匹配不同的 URL,并定义相关配置规则

http {
 ...
 ...  #各server的公共配置
 server {    #每个server用于定义一个虚拟主机,第一个server为默认虚拟服务器
 ...
 }
 server {     
 ...
 server_name   #虚拟主机名
 root     #主目录
 alias     #路径别名
 location [OPERATOR] URL {     #指定URL的特性
 ...
 if CONDITION {
 ...
 }
 }
 }
}

http协议配置说明

http {
   include       mime.types; #导入支持的文件类型,是相对于/apps/nginx/conf的目录
   default_type application/octet-stream; #除mime.types中文件类型外,设置其它文件默认类型,访问其它类型时会提示下载不匹配的类型文件
#日志配置部分
    #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     on; #在开启了sendfile的情况下,合并请求后统一发送给客户端。
    #tcp_nodelay   off; #在开启了keepalived模式下的连接是否启用TCP_NODELAY选项,当为off时,延迟0.2s发送,默认On时,不延迟发送,立即发送用户响应报文。
    #keepalive_timeout 0;
   keepalive_timeout  65 65; #设置会话保持时间,第二个值为响应首部:keepAlived:timeout=65,可以和第一个值不同
    #gzip on; #开启文件压缩
   server {
       listen       80; #设置监听地址和端口
       server_name localhost; #设置server name,可以以空格隔开写多个并支持正则表达式,如:*.kgc.com www.kgc.* ~^www\d+\.kgc\.com$ default_server 
        #charset koi8-r; #设置编码格式,默认是俄语格式,建议改为utf-8
        #access_log logs/host.access.log main;
       location /fxj  {           www.ky31.com/fsj     /apps/nginx/html   
           root   /data;
           index index.html index.htm;
       }
        #error_page 404             /404.html;
        # redirect server error pages to the static page /50x.html
        #
       error_page   500 502 503 504 /50x.html; #定义错误页面
       location = /50x.html {
           root   html;
       }
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ { #以http的方式转发php请求到指定web服务器
        #   proxy_pass   http://127.0.0.1;
        #}
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ { #以fastcgi的方式转发php请求到php处理
        #   root           html;
        #   fastcgi_pass   127.0.0.1:9000;
        #   fastcgi_index index.php;
        #   fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
        #   include       fastcgi_params;
        #}
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht { #拒绝web形式访问指定文件,如很多的网站都是通过.htaccess文件
来改变自己的重定向等功能。
        #   deny all;
        #}
       location ~ /passwd.html {
           deny all;
       }
   }
    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server { #自定义虚拟server
3.3.1 MIME
范例: 识别php文件为text/html
    #   listen       8000;
    #   listen       somename:8080;
    #   server_name somename alias another.alias;
    #   location / { 
    #       root   html;
    #       index index.html index.htm; #指定默认网页文件,此指令由
ngx_http_index_module模块提供
    #   }
    #}
    # HTTPS server
    #
    #server { #https服务器配置
    #   listen       443 ssl;
    #   server_name localhost;
    #   ssl_certificate     cert.pem;
    #   ssl_certificate_key cert.key;
    #   ssl_session_cache   shared:SSL:1m;
    #   ssl_session_timeout 5m;
    #   ssl_ciphers HIGH:!aNULL:!MD5;
    #   ssl_prefer_server_ciphers on;
    #   location / {
    #       root   html;
    #       index index.html index.htm;
    #   }
    #}
2.mine

此项为支持的 文件格式,如果不支持的格式 会自动帮你下载,如果支持 就会显示在网页上

3.server下的root

root指定

root路径格式 指定文件的路径    url  
Syntax:	root path;
Default:	
root html;
Context:	http, server, location, 

指明  你软件的根目录
4.构建虚拟主机

server块构建虚拟主机

4.1基于域名的虚拟主机

以电脑端和手机端为例

[root@localhost ~]#vim /etc/nginx/nginx.conf
#修改配置文件 要放在  http 模块里
 include             /etc/nginx/mime.types;
 include             /apps/nginx/conf.d/*.conf;
cd  /etc/nginx/conf.d
vim pc.conf
vim sj.conf
#编写pc端配置文件
server {
   listen  80;
   server_name  localhost;
   root /data/nginx/html/pc/;
}
#也可以使用location模块
server {
   listen  192.168.240.11:80;
   server_name  www.pc.com;
 location   /  {
   root  /data/nginx/html/pc;

}
}

编写手机端配置文件
server  {
   listen  80;
   server_name  www.sjcxk.com;
   root  /data/nginx/html/sj/;
}

去往另一台机器修改 /etc/hosts  文件

本机重启nginx
nginx  -s  reload
测试机
curl  www.pc.com
curl  www.sj.com

4.2基于端口

添加修改端口号

修改手机端配置文件

电脑端不变

本机重启nginx
nginx  -s  reload
测试机
curl  www.pc.com
curl  www.sj.com

4.3基于ip地址

临时添加网卡

ifconfig  ens33:0  192.168.240.100/24

修改配置文件

修改手机端

电脑端不修改,到测试机修改配置文件/etc/hosts文件

本机重启nginx
nginx  -s  reload
测试机
curl  192.168.240.11
curl  192.168.240.100

5.alias别名

在nginx中alias是用于创建一个路径别名的指令

别名设置

服务端
server {
   listen 80;
   server_name www.pc.com;
   location /news{
        alias /data/nginx/html/pc/;
        #相当于替换 你访问 news  就是访问/data/nginx/html/pc/
        }
}

6.location匹配

在 Nginx 中,location 模块用于配置基于请求 URI 的位置匹配规则。它允许开发者定义不同的行为以响应特定 URI 或者 URI 模式的请求

#location官方帮助
http://nginx.org/en/docs/http/ngx_http_core_module.html#location

语法规则:

#语法规则:
location [ = | ~ | ~* | ^~ ] uri { ... }

=              	#用于标准url前,需要请求字串与uri精确匹配,大小敏感,如果匹配成功就停止向下匹配并立即处理请求
^~            	#用于标准url前,表示包含正则表达式,并且匹配以指定的正则表达式开头,对URI的最左边部分做匹配检查,不区分字符大小写
~              	#用于标准url前,表示包含正则表达式,并且区分大小写
~*            	#用于标准url前,表示包含正则表达式,并且不区分大写
不带符号   	  	 #匹配起始于此uri的所有的uri

#\            	#用于标准url前,表示包含正则表达式并且转义字符。可以将 . * ?等转义为普通符号

#匹配优先级从高到低:
=, ^~, ~/~*, 不带符号
分为前缀匹配和正则匹配
前缀匹配有  =    ^~   不带符号
正则匹配有  ~/~*
当前缀匹配匹配到  = 精准匹配时则直接匹配不进行正则匹配
当前缀匹配最长前缀匹配为^~时则匹配^~不进行正则匹配
当前缀匹配最长前缀匹配位不带符号时则记录不带符号开启正则匹配
正则匹配成功则使用正则匹配,否则使用不带符号匹配
7.基于四层访问控制模块  access  

在Nginx中,access模块用于配置访问控制规则,允许或拒绝特定的客户端对服务器资源的访问。通过access模块,你可以根据客户端的IP地址、用户代理、请求方式等条件来控制对服务器资源的访问权限。

allow:允许特定的客户端访问服务器资源。

deny:拒绝特定的客户端访问服务器资源。

satisfy:指定满足allowdeny指令的条件之一即可访问资源,还是需要同时满足所有条件才能访问资源。

示例:

允许192.168.240.13和10.0.0.1地址对服务器资源访问

拒绝其他客户端访问

当使用192.168.240.12对服务器进行访问时403报错权限拒绝

  • 34
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值