nginx服务器和配置文件

饭宝  论坛元老 | 2024-7-13 11:50:37 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1003|帖子 1003|积分 3009

Nginx网站服务

一、nginx—web服务器

1、概念

http就是apache,如今国内很少,nginx是开源的,是一款高性能,轻量级的web服务软件。稳定性高,而且版本迭代比力快(修复bug速度比力快,安全性高),主流22和24,斲丧资源很低,http的哀求并发毗连,单台服务器可以支持30000~~50000个并发哀求(系统资源全部分配给nginx)。单个节点的nginx一般支持20000个并发
2、nginx的功能介绍

2.1 静态文件服务:静态页面,可以直接提供静态文件服务,html、css、jsp。处置惩罚静态页面的响应速度很快,服从很高
2.2 代理:正向代理,反向代理。可以实现负载均衡,高可用和故障转移
2.3 动态内容处置惩罚,nginx并不能直接处置惩罚动态哀求,可以通过中间件把动态哀求转发给后端服务器(nginx 、php、mysql、tomcat)
2.4 支持https加密
2.5 可以实现重定向
2.6 虚拟主机,一个nginx可以配置多个域名和站点
2.7 nginx自带缓存机制
2.8 性能可扩展,处置惩罚能力可以随时调解
3、nginx应用场景

3.1 静态页面
3.2 转发动态哀求
3.3 反向代理,负载均衡
3.4 缓存服务
  1. ./configure --prefix=/usr/local/nginx \
  2. --user=nginx \
  3. --group=nginx \
  4. --with-http_ssl_module \                #支持https的加密功能ss/tls
  5. --with-http_v2_module \                 #支持http2.0协议
  6. --with-http_realip_module \             #支持nginx获取客户端的真实ip地址
  7. --with-http_stub_status_module \        #支持nginx获取访问状态信息的功能
  8. --with-http_gzip_static_module \        #支持页面压缩功能
  9. --with-pcre \                           #支持prce库
  10. --with-stream \                         #支持4层代理的模块
  11. --with-stream_ssl_module \              #支持对tcp连接的加密
  12. --with-stream_realip_module             #支持从代理协议中获取客户端的真实ip地址
复制代码
配置文件目录 nginx.conf 主配置文件
工作目录
日志目录(访问日志和报错日志)
nginx的二进制启动脚本
4、nginx常用命令

nginx -t :检测配置文件的语法是否正确
nginx -v :显示nginx的版本
nginx -V:显示版本和配置项
nginx -s:s指的是信号
nginx -s stop  :关闭nginx服务
nginx -s reload :重新加载nginx
如果更改了配置文件,使用nginx -s reload 命令则无需重启服务
rpm -q nginx:查看是否安装nginx
make -j 4 && make install:启动四个cpu进行处置惩罚
二、nginx配置文件

nginx.conf 配置文件的作用
1、全局模块

worker_process 1;
工作历程数,设置成服务器内核数的2倍(一般不超过8个,超过8个反而会降低性能,一般4个,1~2个最好)
处置惩罚历程的过程一定涉及配置文件和展示页面,也就是涉及打开文件的数量
linux默认打开的文件数就是1024个
  1. vim /etc/security/limits.conf
  2. #这个配置生效只能重启,这是系统初始化的一个环节
  3. *表示任意  
  4. # 在<domain>    <type>  <item>    <value>下添加
  5. * soft nproc 65535
  6. #能打开的进程最大数的软限制是65535,65535是最大
  7. *表示任意  hard nproc 65535
  8. #能打开的进程最大数的硬限制是65535,65535是最大
  9. * soft nofile 65535
  10. #进程打开文件数的最大值655355
  11. * hard nofile 655355
  12. #设置所有用户的打开文件数(nofile)的硬限制
复制代码
2、nginx配置文件的寄义

  1. vim /usr/local/nginx/conf/nginx.conf
  2. #user nobody
  3. #默认程序用户就是nginx,这里可以保持注释无需修改
  4. #
  5. worker_processes 1;
  6. #
  7. pid /usr/local/nginx/run/nginx.pid;
  8. #pid文件的位置
  9. events {
  10.   worker_connections  10000;
  11. }
  12. #events模块,决定了nginx能够处理的连接数,连接数worker_processes的数值相乘
  13. #http模块的转发和处理http请求,设置代理(正向代理,反向代理),缓存,定义日志格式,重定向配置
  14. http {
  15.     include       mime.types;
  16.     #文件扩展名与文件类型的映射,作用:nginx可以打开的文件和支持的文件类型
  17.     default_type  application/octet-stream;
  18.     #默认支持的文件类型,.html.htm .jsp .js .php
  19.     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  20.     #                  '$status $body_bytes_sent "$http_referer" '
  21.     #                  '"$http_user_agent" "$http_x_forwarded_for"';
  22. # 日志格式,默认日志,记录了access.log,即访问日志格式,error.log也是一样的格式,这个可以改,但是一般没人动
  23.    #access_log  logs/access.log  main;
  24.    #默认的访问日志的存放路径,一般不动
  25.     sendfile        on;
  26.     #支持文件发送或者下载
  27.     #tcp_nopush     on;
  28.     #默认就是异步非阻塞模式功能
  29.     #keepalive_timeout  0;
  30.     keepalive_timeout  65;
  31.     #连接保持时间,单位是秒
  32.    
  33.     #gzip  on;
  34.     #gzip模块,设置是否开启页面压缩功能
  35.     #server模块式开启web服务的模块
  36.     server {
  37.         listen       80;
  38.         #nginx的默认监听端口
  39.         server_name  localhost;
  40.         #配置站点的域名
  41.         #charset koi8-r;
  42.         #网页默认字符集(不支持中文)
  43.         #charset utf-8;
  44.         #access_log  logs/host.access.log  main;
  45.         #默认访问日志的地址
  46.         
  47.         #网页匹配的工作目录的地址和支持打开页面的文件类型
  48.         location / {
  49.             root   html;
  50.             # root表示的是nginx工作目录的家目录  /usr/local/nginx/html,是拼接模式,不需要绝对路径
  51.             #alias也是指匹配nginx的工作目录。但是需要绝对路径
  52.             index  index.html index.htm;
  53.             # 如果需要添加别的类型的文件可在index.htm后添加index.jsp等;
  54.         }
  55. location网页匹配的工作目录的地址和支持的打开页面的文件类型
  56.         #error_page  404              /404.html;
  57.         # redirect server error pages to the static page /50x.html
  58.         #
  59.         error_page   500 502 503 504  /50x.html;
复制代码
3、修改nginx的工作的家目录

  1. vim /usr/local/nginx/conf/nginx.conf
  2. # 修改location模块
  3. location /xy102 {
  4.     root /opt/test1;
  5.     index  index.html index.htm index.jsp;
  6. }
  7. # 192.168.100.11/opt/xy102/index.html
  8. wq!
  9. nginx -t
  10. mkdir -p /opt/test1/xy102
  11. cd /opt/test1/xy102
  12. echo "天天开心" > index.html
  13. # 注意配置文件里面的字符集需要修改成中文,不然不显示
  14. systemctl restart nginx
  15. 页面访问 192.168.100.11/xy102/index.html  访问结果为天天开心
  16. cd /opt/test1
  17. mkdir xy103
  18. echo 456 > index.html
  19. # 修改location下的家目录root为alias
  20. location /xy103 {
  21.     alias /opt/test1/xy103;
  22.     #alias也是指匹配nginx的工作目录。需要绝对路径
  23.     index  index.html index.htm index.jsp;
  24. }
  25. wq!
  26. nginx -t
  27. systemctl restart nginx
  28. 页面访问 192.168.100.11/xy103  访问结果为456
复制代码
4、root、alias匹配工作目录

root的匹配模式是拼接,root的工作目录,访问的uri /xy102
location /xy102
/opt/test1/xy102/
alias 匹配nginx的工作目录,路径是绝对路径
location/xy102
alias /opt/test1/xy102/;
alias 只能写在http模块当中server模块的location模块里面
root可以写在server模块,也可以在http,也可以在location中
使用alias匹配工作目录不可以使用重定向功能
5、总结

worker_process 1; :全局模块,指定历程数
events模块决定了可以或许处置惩罚的毗连数
stream :四层代理模块
http :转发和处置惩罚http哀求,设置代理(正向代理、反向代理),缓存,界说日志格式,重定向配置
在http模块当中,包含: server块,http里面可以有多个server模块
在server模块当中,包含:location模块,server里面可以有多个location模块
二、实验

1、统计访问状态

  1. vim nginx.conf
  2. location /status {
  3.      stub_status on;
  4.     #打开状态统计的功能
  5.      access_log off;
  6.   #关闭status的访问日志
  7. }
复制代码
2、访问ip代表的意思

  1. Active connections:1
  2. # 当前活动的连接数
  3. server accepts handled requests
  4. # 已经处理的连接数
  5. 36 36 36
  6. # 三个数字从左往右:已经处理的连接数,成功建立连接的次数,已经处理的请求数
  7. Reading: 0 writing:1 Waiting:0
  8. # 表示服务端正在从客户端读取请求的数据
  9. # 表示服务端正在把响应数据发送给客户端
  10. # 表示有连接处于空闲状态,等待新的请求
复制代码
3、基于密码的授权进行访问控制

yum -y install httpd-tools
#httppasswd的工具,要先安装
  1. htpasswd -c /usr/local/nginx/passwd.db chengqian
  2. cd /usr/local/nginx
  3. chown nginx passwd.db
  4. chmod 400 passwd.db
  5. cd conf/
  6. vim nginx.conf  
  7. # 在location下添加密码验证
  8. auth_basic "secret";
  9. # 开启用户密码验证
  10. auth_basic_user_file /usr/local/nginx/passwd.db
  11. # 开启加密模式。使用指定的加密文件
  12. wq!
复制代码
4、基于客户端的访问控制——根据ip地点来进行控制

  1. vim nginx.conf
  2. # 在location下添加
  3. deny 指定ip;
  4. allow all;
  5. # deny表示禁止指定ip访问nginx,allow表示允许
  6. deny 指定网段;
  7. allow all;
复制代码
5、基于域名的nginx主机访问

  1. vim nginx.conf
  2. # 在server模块下,把server_name后面的localhost改为域名(如 www.xy102.com)
  3. # 在配置站点的域名下增加访问日志
  4. # 在location模块下,把root后面的工作目录修改为/var/www.html/xy102;
  5. server_name www.xy102.com;
  6. access_log logs/www.xy102.com.access.log;
  7. root /var/www/html/xy102;
  8. wq!
  9. # nginx -t 查看语法是否有误
  10. # 正确 systemctl restart nginx
复制代码
  1. # 命令行操作
  2. mkdir -p /var/www/html/xy102
  3. echo "world is beautiful" > /var/www/html/xy102/index.html
复制代码
  1. # 通过域名访问(www.xy102.com),由于没有注册dns,需要做一个本地映射
  2. vim /etc/hosts
  3. 192.168.100.11 www.xy102.com
  4. # 添加映射,即访问192.168.100.11相当于访问www.xy102.com
  5. wq!
  6. # nginx -t 查看语法是否有误
  7. 正确 curl 192.168.100.11   
  8. # 打印结果 world is beautiful
复制代码
6、多个域名的nginx主机访问,在基于域名的nginx主机访问上添加新的域名

  1. vim nginx.conf
  2. # 在server结束的花括号后再添加一个server
  3. server {
  4.       listen 80;
  5.       server_name www.halo.com;
  6.       charset utf-8;
  7.       access_log logs/www.halo.com.access.log;
  8.    
  9.       location / {
  10.        root /var/www/html/halo;
  11.        index index.html;
  12.       }
  13.       
  14.        error_page   500 502 503 504  /50x.html;
  15.         location = /50x.html {
  16.             root   html;
  17.      }
  18.    }
  19. wq!
  20. # nginx -t 查看语法是否有误
  21. # 正确 systemctl restart nginx
复制代码
  1. # 命令行操作
  2. mkdir /var/www/html/halo
  3. echo "nihao" > /var/www/html/halo/index.html
复制代码
  1. # 做一个本地映射
  2. vim /etc/hosts
  3. 192.168.100.11 www.xy102.com www.halo.com
  4. wq!
  5. curl www.halo.com   
  6. #打印结果 nihao
复制代码
7、基于ip地点的nginx主机访问

  1. 命令行操作
  2. ifconfig ens33:0 192.168.100.100/24
  3. # 添加虚拟网卡ens33:0,我们用虚拟网卡来做此实验,此实验基于多域名访问nginx主机,ip访问需要修改端口
  4. vim nginx.conf
  5.     server {
  6.         listen      192.168.100.11:80;
  7.         server_name  www.xy102.com;
  8. # 80端口前添加192.168.100.11:操作成功即上图
  9. server {
  10.       listen 192.168.100.100:80;
  11.       server_name www.halo.com;
  12. # 80端口前添加192.168.100.10:操作成功即上图
  13. wq!
  14. # nginx -t 查看语法是否有误
  15. # 正确 systemctl restart nginx
  16. 页面访问
  17. 192.168.100.11
  18. # 打印结果 world is beautiful
  19. 192.168.100.100
  20. # 打印结果 nihao
复制代码
8、基于端口的nginx的主机访问

  1. # 实验基于ip地址访问nginx主机
  2. vim nginx.conf
  3.     server {
  4.         listen      192.168.100.11:8080;
  5.         server_name  www.xy102.com;
  6. # 把80端口改为8080
  7. server {
  8.       listen 192.168.100.100:8082;
  9.       server_name www.halo.com;
  10. # 把80端口改为8082
  11. # 只有端口没有被占用,就可以使用
  12. wq!
  13. # nginx -t 查看语法是否有误
  14. # 正确 systemctl restart nginx
  15. 192.168.100.11:8080
  16. # 打印结果 world is beautiful
  17. 192.168.100.100:8082
  18. # 打印结果 nihao
复制代码
  1. cd ..
  2. cd logs
  3. ls
  4. # www.xy102.com.access.log www.halo.com.access.log
  5. cat www.xy102.com.access.log
  6. cat www.halo.com.access.log
  7. # 此时他们的访问日志以分开,可以分别查看他们的访问日志
复制代码
7、多个配置文件

  1. vim nginx.conf
  2. # 在http模块下的include下添加下面命令
  3. include /usr/local/nginx/conf.d/*.conf;
  4. # 可以识别到conf.d下,只包含server模块的conf文件
复制代码
  1. 命令行
  2. [root@localhost nginx]# mkdir conf.d
  3. [root@localhost nginx]# cd conf.d
  4. [root@localhost conf.d]# ls
  5. [root@localhost conf.d]# vim test1.conf
复制代码
  1. vim test1.conf
  2. server {
  3.    listen 8888;
  4.    server_name localhost;
  5.    
  6.    location /test1 {
  7.      root /opt/conf/;
  8.      index index.html;
  9.      
  10.    }
  11. }
  12. server {
  13.    listen 8899;
  14.    server_name localhost;
  15.    
  16.    location /test2 {
  17.      root /opt/conf/;
  18.      index index.html;
  19.    }
  20. }
  21. wq!
  22. # nginx -t 查看语法是否有误
  23. # 正确 systemctl restart nginx
复制代码
  1. 命令行
  2. [root@localhost opt]# mkdir -p conf/test1
  3. [root@localhost opt]# mkdir -p conf/test2
  4. [root@localhost opt]# ls
  5. conf
  6. [root@localhost opt]# cd conf/
  7. test1 test2
  8. [root@localhost conf]# echo "this is test1" > test1/index.html
  9. [root@localhost conf]# echo "this is test2" > test2/index.html
  10. [root@localhost conf]# cd /usr/local/nginx/conf.d/
  11. [root@localhost conf.d]# netstat -antp | grep nginx
  12. 可以查看到刚刚的端口
  13. 页面访问
  14. 192.168.100.11:8888/test1
  15. # 打印结果为this is test1
  16. 192.168.100.11:8899/test2
  17. # 打印结果为this is test2
复制代码
nginx的优化与防盗链:
查看版本号
1.隐蔽版本号
  1. 查看版本号:以192.168.100.11:8899/test2为例
  2. 页面查看,f12后,f5可以查看到nginx的版本号,,以下为隐藏版本号操作
  3. 命令行查看,curl -I 192.168.100.11:8899/test2
  4. vim nginx.conf
  5. # 在http模块下添加
  6. server_tokens off;
  7. # 关闭版本号
  8. wq!
  9. # nginx -t 查看语法是否有误
  10. # 正确 systemctl restart nginx
  11. 此时查看版本号,版本号已隐藏
  12. ### server_tokens on;  开启版本号
复制代码
2.隐蔽版本号的另外一种方法
  1. cd /opt/nginx-1.22.0/src/core
  2. vim nginx.h
  3. 修改下面两个命令
  4. # define NGINX_VERSION     "1.22.0"
  5. # define NGINX_VER         "nginx/" NGINX_VERDION
  6. 修改后
  7. define NGINX_VERSION       "wo zhen shuai"
  8. define NGINX_VER           "ni bie cai"
  9. wq!
  10. [root@localhost core]# cd /opt/nginx-1.22.0
  11. [root@localhost nginx-1.22.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
  12. [root@localhost nginx-1.22.0]# make -j 4 && make install
  13. 此时页面访问版本号变成 ni bie cai/wo zhen shuai
  14. 命令行访问 curl -I 192.168.100.11:8899/test2 同样如此
  15. # 注意此ip地址是虚拟ip地址,不是永久,重新开启虚拟机需要再创建虚拟ip地址
复制代码
注意:域名访问nginx和ip访问nginx主机的区别?
答:域名默认端口为80不需要修改,ip访问需要修改端口

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

饭宝

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表