====== Nginx 基本 ======
> for Nginx v1.20.1 or Later
本实践崇尚快速落地部署,因此整理一些最小化的安装及部署配置,通常情况下,将配置文件复制过去修改部分参数就可以使用。该部分配置为NGINX站点配置,Linux环境下,文件通常保存在:''/etc/nginx/conf.d/''目录下。
===== Nginx安装 =====
[[https://nginx.org/en/linux_packages.html|nginx.org]]
我们可以将NGINX的软件源添加到系统中,然后通过系统自带的软件包管理系统,如YUM,DNF,APT之类的进行软件及相关模块安装,使用编译安装也可以,但会在系统中安装一大堆的依赖项,清除也容易清除。
查找系统上已经安装的NGINX及相关模块
rpm -qa | grep nginx
以CentOS为例安装Nginx相关模块
yum search nginx
yum install nginx-mod-ModName
===== 最小化 nginx 静态站配置 =====
server {
listen 80;
listen [::]:80;
server_name www.xyz.com; # server_name _ 未提供HOST头部时使用的站点
root /var/www/app-path/
index index.html
location / {
}
}
通常指定网站根目录及首页即可
===== Nginx location 及访问控制 =====
==== 关于 location 匹配规则 ====
语法规则为:'' %%location [=|~|~*|^~] /uri/ { … }%% ''
* %% = /path... 为精确匹配 %%
* %% ^~ /path... 匹配以/path开关的路径。location中的规则无需进行url编解码,当请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)%%
* %% ~ expr... 匹配包含expr的路径,可用正则表达式 %%
* %% ~* expr... 同上,但不区分大小写 %%
* %% !~ expr 与 !~* expr... 反向匹配,匹配不包含指定路径的规则 %%
* %% / 通用路径匹配,最终路径,所有路径均未匹配时,调用规则 %%
** 规则匹配顺序 **
* %% = /PATH ..., 精确匹配 %%
* %% ^~ /PATH ..., 首位匹配 %%
* 按照配置文件进行匹配
==== 访问控制 ====
**禁止客户端访问指定路径**,以下配置节禁止客户端访问/conf/, /bin/, /inc, /vendor/ 等目录
location ~ /(conf|bin|inc|vendor)/ {
allow 192.168.1.0/24;
deny all;
}
**针对指定路径返回指定状态**,以下配置将路径/usr/c03f883c.db设置为404未找到
location ^~ /usr/c03f883c.db {
return 404;
}
**对指定路径进行HTTP BASIC认证**
location / {
auth_basic "访问需要认证";
auth_basic_user_file /etc/nginx/conf.d/htpasswd;
#autoindex on;
}
需要注意认证文件位置,否则会一直无法认证
使用以下命令生成所需的PASSWORD文件
printf "hsiaotien:$(openssl passwd -crypt 123456)\n" >> conf/htpasswd
#用户名:hsiaotien, 密码:123456
#注意:密码不要超过8位,否则可能无法工作。也因此在有条件的情况下,不要使用BASIC认证方式
===== 其他范例 =====
* 用作代理服务器 [[itwiki:nginx-proxy|NGINX 代理]]
* 搭建 dokuwiki [[itwiki:nginx-doku|搭建DOKUWIKI ]]
* 用于支持PHP的配置 [[itwiki:nginx-php|支持PHP ]]