目录
nginx配置默认首页(index.html index.htm)
Nginx的安装
下载地址:
解压缩Nginx的tar包
tar -zxvf nginx-1.16.1.tar.gz
进入解压目录:cd nginx-1.16.1
然后运行
./configure
默认的安装路径是/usr/local/nginx,可以通过 ./configure --prefix=/home/wjz 来指定安装目录
然后运行编译:
make && make install
在configure的时候没有指定目录时,Nginx的默认安装目录是/usr/local/nginx
在/usr/local/nginx/sbin目录下检验Nginx启动是否有问题,在该目录下
./nginx -t
报错若显示如下,需要修改conf文件
修改/usr/local/nginx/conf/nginx.conf
因为我用root用户启动nginx,所以我修改这里的用户为root;
修改完成后再次检验没问题
启动nginx
./nginx
显示如下界面,说明启动成功
Nginx的配置
打开nginx.conf 配置文件,前两行是:
#user nobody; #指定用户,可以改为 user root;
worker_processes 1;
要了解的是,在Nginx运行的时候,会启动两种进程,一种是主进程master process,负责监控端口,协调工作进程的工作状态,分配工作任务;一种是工作进程worker process,负责进行任务处理。
这里默认worker_processes 进程是1,可以根据服务器性能情况进行修改。
nginx配置默认首页(index.html index.htm)
在安装Nginx的服务器上设置默认首页的目录,默认目录就是Nginx的安装目录(相对路径),即/usr/local/nginx/html
这里设置为/root/html目录(绝对路径),在该目录下
编辑index.html文件为
<h1>web1.test.com</h1>
编辑后,Nginx重新加载配置文件
./nginx -s reload
查看页面显示为
Location配置规则
不带符号,要求必须以指定模式开始
server {
listen 80;
server_name 127.0.0.1;
location /abc{
default_type text/plain;
return 200 "access success";
}
}
以下访问都是正确的
http://192.168.200.133/abc
http://192.168.200.133/abc?p1=TOM
http://192.168.200.133/abc/
http://192.168.200.133/abcdef
= : 用于不包含正则表达式的uri前,必须与指定的模式精确匹配
server {
listen 80;
server_name 127.0.0.1;
location =/abc{
default_type text/plain;
return 200 "access success";
}
}
可以匹配到
http://192.168.200.133/abc
http://192.168.200.133/abc?p1=TOM
匹配不到
http://192.168.200.133/abc/
http://192.168.200.133/abcdef
~ : 用于表示当前uri中包含了正则表达式,并且区分大小写
~*: 用于表示当前uri中包含了正则表达式,并且不区分大小写
换句话说,如果uri包含了正则表达式,需要用上述两个符合来标识
Nginx反向代理设置
只需要在location处增加:proxy_pass http://IP地址:端口号或者域名就可,如下
server_name是服务器本身的ip地址或者name
编辑后,Nginx重新加载配置文件
./nginx -s reload
测试成功!
Nginx负载均衡设置
Nginx有多种负载均衡设置,本文章的需求是有两个IP地址,ip1和ip2,实现ip1是主要使用的,ip2作为备用,当ip1:8080端口无法访问的时候,会访问ip2:8080
编辑后,Nginx重新加载配置文件
./nginx -s reload
测试成功!
另外一些常见的命令
./nginx -h 查看nginx所有的命令参数
options | 说明 |
---|---|
-?,-h | this help |
-v | 显示nginx的版本号 |
-V | 显示nginx的版本号和编译信息 |
-t | 检查nginx配置文件的正确性 |
-T | 检查nginx配置文件的正确定及配置文件的详细配置内容 |
-q | suppress non-error messages during configuration testing |
-s signal | 向主进程发送信号,如:./nginx -s reload 配置文件变化后重新加载配置文件并重启nginx服务 |
-p prefix | 设置nginx的安装路径 |
-c filename | 设置nginx配置文件的路径 |
-g directives | 设置配置文件之外的全局指令 |
nginx安全漏洞(CVE-2021-23017)修复
需要注意的是,如果Nginx -V 显示configure arguments,什么也没有就是没有加参数
重启的时候直接用Nginx -s reload 即可
报错:
报错1:upstream timed out (110: Connection timed out) while connecting to upstream,
查看网络是否可以ping通
telnet对应的访问端口是否通
避免web文件信息泄露
避免web上访问文件下载文件的信息泄露,可以对访问的类型文件限制
#避免文件信息泄露,限制以下类型文件不能访问下载
location ~* \.(docx|txt|tar|csv|doc|log)$ {
deny all;
}
Nginx server_name详解
Nginx中的server_name指令主要用于配置基于名称的虚拟主机,server_name可以是访问的域名:端口,也可以是IP:端口
如果访问的是IP这种方式,需要将service_name设置为ip
例如在27服务器上设置如下
在另一台服务器22上访问
如果将27服务器上nginx修改为:
在22服务器上访问:
当然,如果一个端口只有一个server,没有设置多个server,则server_name不设置也不影响
27服务器上nginx修改为:
在22服务器上访问:
Nginx配置server_name讲解_nginx server_name使用_Studying_swz的博客-CSDN博客
其他参考文章:
nginx升级查看这篇文章:
nginx 版本升级_猎人在吃肉的博客-CSDN博客_nginx升级
参考文章:nginx安全漏洞(CVE-2021-23017)修复_皮皮虾不皮呀的博客-CSDN博客_nginx 安全漏洞
nginx -s reload 与 service nginx restart 的区别_Roc.Chang的博客-CSDN博客
systemctl命令_怎么把mysqld.service服务加入到systemctl_weixin_39758229的博客-CSDN博客
参考文章:
Nginx安装:
解决Nginx出现403 forbidden (13: Permission denied)报错的四种方法
nginx 手动安装 及依赖包安装(pcre+zlib+openssl)
Nginx配置: