赞
踩
确保你已经安装nginx,安装方法参见上一篇文章,链接如下:
https://blog.csdn.net/Outsider_people/article/details/110076862
我们已将nginx编译到srv目录下,没有启动过nginx的情况下,结构如下
- # ll /srv/nginx/
- total 20
- drwxr-xr-x 2 root root 4096 Jan 17 20:26 conf #存放nginx的相关配置文件
- drwxr-xr-x 2 root root 4096 Jan 17 18:32 html #默认提供webml的根目录
- drwxr-xr-x 2 root root 4096 Jan 17 18:32 logs #ngunx日志的存放目录
- drwxr-xr-x 2 root root 4096 Jan 17 18:32 modules #存放了一些模块会用到的库
- drwxr-xr-x 2 root root 4096 Jan 17 18:32 sbin #存放二进制文件,需要用二进制文件启动nginx
我没作任何配置,现在启动nginx
# /srv/nginx/sbin/nginx # 启动nginx
nginx启动后我们就可以访问他了,虽然我们没有进行人格配置,但是nginx会默认为我们创建一个http服务器,会监听在80端口上,安装nginx的虚拟机地址是:10.0.0.8
- directive value [value2 ...];
- 注意
- (1) 指令必须以分号结尾
- (2) 支持使用配置变量
- 内建变量:由Nginx模块引入,可直接引用
- 自定义变量:由用户使用set命令定义,格式: set variable_name value;
- 引用变量:$variable_name
主配置文件结构:四部分
- main block:主配置段,即全局配置段,对http,mail都有效
- #事件驱动相关的配置
- event {
- ...
- }
- #http/https 协议相关配置段
- http {
- ...
- }
- #默认配置文件不包括下面两个块
- #mail 协议相关配置段
- mail {
- ...
- }
- #stream 服务器相关配置段
- stream {
- ...
- }
默认的nginx。conf配置文件格式说明
- worker_processes 1; #启动工作进程数数量
- events { #events设置快,主要影响nginx服务器与用户的网络连接,比如是否允许同时接受多个网络连
- 接,使用哪种事件驱动模型处理请求,每个工作进程可以同时支持的最大连接数,是否开启对多工作进程下的
- 网络连接进行序列化等。
- worker_connections 1024; #设置单个nginx工作进程可以接受的最大并发,作为web服务器
- 的时候最大并发数为worker_connections * worker_processes,作为反向代理的时候为
- (worker_connections * worker_processes)/2
- }
- http { #http块是Nginx服务器配置中的重要部分,缓存、代理和日志格式定义等绝大多数功能和第三方模
- 块都可以在这设置,http块可以包含多个server块,而一个server块中又可以包含多个location块,
- server块可以配置文件引入、MIME-Type定义、日志自定义、是否启用sendfile、连接超时时间和单个链
- 接的请求上限等。
- include mime.types;
- default_type application/octet-stream;
- sendfile on; #作为web服务器的时候打开sendfile加快静态文件传输,指定是否使用
- sendfile系统调用来传输文件,sendfile系统调用在两个文件描述符之间直接传递数据(完全在内核中操
- 作),从而避免了数据在内核缓冲区和用户缓冲区之间的拷贝,操作效率很高,被称之为零拷贝,硬盘 >>
- kernel buffer (快速拷贝到kernelsocket buffer) >>协议栈。
- keepalive_timeout 65; #长连接超时时间,单位是秒
- server { #设置一个虚拟机主机,可以包含自己的全局快,同时也可以包含多个location模块。比如
- 本虚拟机监听的端口、本虚拟机的名称和IP配置,多个server 可以使用一个端口,比如都使用80端口提供
- web服务、
- listen 80; #配置server监听的端口
- server_name localhost; #本server的名称,当访问此名称的时候nginx会调用当前
- serevr内部的配置进程匹配。
- location / { #location其实是server的一个指令,为nginx服务器提供比较多而且灵活的
- 指令,都是在location中体现的,主要是基于nginx接受到的请求字符串,对用户请求的UIL进行匹配,并
- 对特定的指令进行处理,包括地址重定向、数据缓存和应答控制等功能都是在这部分实现,另外很多第三方模
- 块的配置也是在location模块中配置。
- root html; #相当于默认页面的目录名称,默认是安装目录的相对路径,可以使用绝对
- 路径配置。
- index index.html index.htm; #默认的页面文件名称
- }
- error_page 500 502 503 504 /50x.html; #错误页面的文件名称
- location = /50x.html { #location处理对应的不同错误码的页面定义到/50x.html,这
- 个跟对应其server中定义的目录下。
- root html; #定义默认页面所在的目录
- }
- }
-
- #和邮件相关的配置
- #mail {
- # ...
- # } mail 协议相关配置段
- #tcp代理配置,1.9版本以上支持
- #stream {
- # ...
- # } stream 服务器相关配置段
- #导入其他路径的配置文件
- #include /apps/nginx/conf.d/*.conf
- }
main全局配置段常见的配置指令分类
全局配置说明
- user nginx nginx; #启动Nginx工作进程的用户和组
- worker_processes [number | auto]; #启动Nginx工作进程的数量,一般设为和CPU核心数相同
- worker_cpu_affinity 00000001 00000010 00000100 00001000; #将Nginx工作进程绑定到指定
- 的CPU核心,默认Nginx是不进行进程绑定的,绑定并不是意味着当前nginx进程独占以一核心CPU,但是可
- 以保证此进程不会运行在其他核心上,这就极大减少了nginx的工作进程在不同的cpu核心上的来回跳转,减
- 少了CPU对进程的资源分配与回收以及内存管理等,因此可以有效的提升nginx服务器的性能。
- CPU MASK: 00000001:0号CPU
- 00000010:1号CPU
- 10000000:7号CPU
- #示例:
- worker_cpu_affinity 0001 0010 0100 1000;第0号---第3号CPU
- worker_cpu_affinity 0101 1010;
- #示例
- worker_processes 4;
- worker_cpu_affinity 00000010 00001000 00100000 10000000;
- [root@centos8 ~]# ps axo pid,cmd,psr | grep nginx
- 31093 nginx: master process /apps 1
- 34474 nginx: worker process 1
- 34475 nginx: worker process 3
- 34476 nginx: worker process 5
- 34477 nginx: worker process 7
- 35751 grep nginx
- #错误日志记录配置,语法:error_log file [debug | info | notice | warn | error |
- crit | alert | emerg]
- #error_log logs/error.log;
- #error_log logs/error.log notice;
- error_log /apps/nginx/logs/error.log error;
- #pid文件保存路径
- pid /apps/nginx/logs/nginx.pid;
- worker_priority 0; #工作进程优先级,-20~20(19)
- worker_rlimit_nofile 65536; #所有worker进程能打开的文件数量上限,包括:Nginx的所有连接(例
- 如与代理服务器的连接等),而不仅仅是与客户端的连接,另一个考虑因素是实际的并发连接数不能超过系统
- 级别的最大打开文件数的限制.最好与ulimit -n 的值保持一致,
- [root@centos8 ~]# watch -n1 'ps -axo pid,cmd,nice | grep nginx #验证进程优先级
- daemon off; #前台运行Nginx服务用于测试、docker等环境。
- master_process off|on; #是否开启Nginx的master-worker工作模式,仅用于开发调试场景,默认为
- on
- 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协议相关的配置结构
- http {
- ...
- ... #各server的公共配置
- server { #每个server用于定义一个虚拟主机,第一个server为默认虚拟服务器
- ...
- }
- server {
- ...
- server_name #虚拟主机名
- root #主目录
- alias #路径别名
- location [OPERATOR] URL { #指定URL的特性
- ...
- if CONDITION {
- ...
- }
- }
- }
- }
htpp协议配置说明
- 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,可以以空格隔开写多个并支持正则表达
- 式,如:*.magedu.com www.magedu.* ~^www\d+\.magedu\.com$ default_server
- #charset koi8-r; #设置编码格式,默认是俄语格式,建议改为utf-8
- #access_log logs/host.access.log main;
- location / {
- root html;
- 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
- # 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;
- # }
- #}
- #是否在响应报文中的Content-Type显示指定的字符集,默认off不显示
- charset charset | off;
- #示例
- charset utf-8;
- #是否在响应报文的Server首部显示nginx版本
- server_tokens on | off | build | string;
范例:修改server字段
- 如果想自定义响应报文的nginx版本信息,需要修改源码文件,重新编译
- 如果server_tokens on,修改 src/core/nginx.h 修改第13-14行,如下示例
- #define NGINX_VERSION "1.68.9"
- #define NGINX_VER "wanginx/" NGINX_VERSION
-
- 如果server_tokens off,修改 src/http/ngx_http_header_filter_module.c
- 第49行,如下示例:
- static char ngx_http_server_string[] = "Server: nginx" CRLF;
- 把其中的nginx改为自己想要的文字即可,如:wanginx
修改server头部信息
- [root@centos8 ~]#vim /usr/local/src/nginx-1.18.0/src/core/nginx.h
- #define NGINX_VERSION "1.68.9"
- #define NGINX_VER "wanginx/" NGINX_VERSION
- [root@centos8 ~]#vim nginx-1.18.0/src/http/ngx_http_header_filter_module.c
- static u_char ngx_http_server_string[] = "Server: magedu-nginx" CRLF;
- [root@centos7 ~]#curl -I www.magedu.org
- HTTP/1.1 200 OK
- Server: wanginx/1.68.9
- Date: Thu, 24 Sep 2020 07:44:05 GMT
- Content-Type: text/html
- Content-Length: 8
- Last-Modified: Wed, 23 Sep 2020 14:39:21 GMT
- Connection: keep-alive
- ETag: "5f6b5e19-8"
- Accept-Ranges: bytes
- [root@centos8 ~]#vim /apps/nginx/conf/conf.d/pc.conf
- server {
- ......
- server_tokens off;
- ......
-
- [root@centos7 ~]#curl -I www.magedu.org
- HTTP/1.1 200 OK
- Server: magedu-nginx
- Date: Thu, 24 Sep 2020 07:44:59 GMT
- Content-Type: text/html
- Content-Length: 8
- Last-Modified: Wed, 23 Sep 2020 14:39:21 GMT
- Connection: keep-alive
- ETag: "5f6b5e19-8"
- Accept-Ranges: bytes
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。