Nginx 配置基础,详细说明
  zW4KfYJoPk6k 2023年11月02日 75 0

Nginx 配置基础,详细说明

开始之前,你需要已经知道如何安装启动 nginx,并知道它的配置目录是在:
Mac 配置文件目录: ​​​/usr/local/etc/nginx​

一、基础配置

官方文档 (En):​​http://nginx.org/en/docs/beginners_guide.html​

1. 原理

Nginx 配置文件里面可以有多个 ​​server​​ 代表多个站点,比如通过端口配置的多个站点、通过域名配置的多个站点。

注意: 每一个单条的配置后面都需要加冒号 ​​;​

http {
server {
}
}

server 中可以有多个路径,每个路径都不一定是在实际的物理目录下,目录是你写的,然后再根据自己需要对应到不同的物理目录下。
比如下面这个配置,如果网站域名是 ​​​localhost​​ :

  • ​localhost​​​ 对应的是​​/data/www​​ 这个实际的物理目录,
  • ​localhost/images​​​ 对应的就是​​/data​​ 这个实际的目录
server {
location / {
root /data/www;
}

location /images/ {
root /data;
}
}

当请求经过 ​​nginx​​​ 时,先确定是走哪个 ​​server​​​ 再确定是走的哪个 ​​location​​​, ​​nginx​​ 配置文件扮演的就是个路由表的角色,附加一些权限配置。

2. 代理站点

再看个例子:
第一个

  1. server1 监听​​8080​​ 端口
  2. server1 根目录是​​/data/up1​
  3. server2 把 server1 作为自己的一个子配置,在访问​​/​​ 目录时,就会访问第一个配置的目录。
  4. server2 的第二个配置目录,使用的是正则表达式,需要在表达式之前使用​​~​​ 这个符号
server {
listen 8080;
root /data/up1;

location / {
}
}

server {
location / {
proxy_pass http://localhost:8080;
}

location ~ \.(gif|jpg|png)$ {
root /data/images;
}
}

二、 多站点配置

原理:

这里先讲讲简单的两个原理,多站点配置主要是通过: 端口号域名

​apache​​​ 或 ​​nginx​​ 的多站点配置原理都是一样的。

1. 通过端口号

如 ​​localhost:80​​​ ​​localhost 8080​​​ ​​localhost:8081​​ 都可以配置不同的站点,一个端口号对应一个站点,一个站点对应一个独立的目录,如下:

server {
listen 80;
server_name localhost;
location / {
root /Users/Kyle/Documents/website;
index index.html index.htm;
}
}

server {
listen 8080;
server_name localhost;
location / {
root /Users/Kyle/Documents/website/diary;
index index.html index.htm;
}
}

server {
listen 8081;
server_name localhost;
location / {
root /Users/Kyle/Documents/website/diary-vue;
index index.html index.htm;
}
}

2. 通过域名

域名配置多站点的原理是: 多个域名可以指向同一个 ip 地址,也就是同一个主机。
此时就用 ​​​server_name​​​ 来区分,不同的请求进入 nginx 之后,匹配不同的 ​​server_name​​​ 也就是域名,然后调用不同的 ​​server​​ 配置,访问不同的目录。

配置域名指向 127.0.0.1 (也就是我自己电脑)

​127.0.0.1​​​ 和 ​​diary.kylebing.cn​​ 都会指向我的电脑,

  • 由​​127.0.0.1​​​ 访问的时候会调用下面配置中的第一个​​server​
  • 用​​diary.kylebing.cn​​​ 访问的时候会调用下面配置中的第二个​​server​
server {
listen 80;
server_name 127.0.0.1;
location / {
root /Users/Kyle/Documents/website;
index index.html index.htm;
}
}

server {
listen 8080;
server_name diary.kylebing.cn diary.kylebing.net;
# 可以使用多个域名,中间用空格间隔
location / {
root /Users/Kyle/Documents/website/diary;
index index.html index.htm;
}
}

效果:

Nginx 配置基础,详细说明_配置文件
Nginx 配置基础,详细说明_linux_02

三、配置 php

这里我使用的是系统自带的 php, ​​php -version​​ 可以查看 php 版本信息

PHP 7.3.11 (cli) (built: Jun  5 2020 23:50:40) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.11, Copyright (c) 1998-2018 Zend Technologies

1. 修改配置文件

在mac中,下面两个路径是一样的,因为 ​​/usr/local/etc​​​ = ​​/etc​

/usr/local/etc/nginx/nginx.conf
/etc/nginx/nginx.conf

修改配置文件:

  1. 在​​server​​ 外层添加 root 这项写成你的项目目录,写在 ​​http​​ 层也可以,写在 ​​server​​ 层也可以
  2. 将​​server​​ 内部的 root 删除,并将:
fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

改为

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

如下,作为参考

http {
include mime.types;
default_type application/octet-stream;
# root 写在这一层也可以,写在里面也可以,但不要写在 location 内部
root /Users/Kyle/Documents/website;

server {
listen 80;
server_name localhost;
location / {
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}

2. 设置 php-fpm 的配置文件

​nginx.conf​​​ 中的 ​​127.0.0.1:9000​​​ 的代理就是 ​​php-fpm​​​ 提供的。
我们需要将其启动,在启动之前需要把它需要的配置文件都配置好。

切换到 ​​/etc​​ 目录

Kyle@Kyles-MBP log % cd /etc

查看一下里面存在的关于 php 的文件,如下

Kyle@Kyles-MBP /etc % ll | grep php
-rw-r--r-- 1 root wheel 5331 Aug 25 2019 php-fpm.conf.default
drwxr-xr-x 4 root wheel 128 Oct 6 10:49 php-fpm.d
-r--r--r-- 1 root wheel 71890 Dec 14 2019 php.ini.default
-r--r--r-- 1 root wheel 71055 Mar 31 2018 php.ini.default-previous

php-fpm.d 目录中还有一个关于配置的文件

Kyle@Kyles-MBP /etc % ll php-fpm.d 
total 56
-rw-r--r-- 1 root wheel 19604 Dec 14 2019 www.conf.default

.default 文件都是系统预置的一些配置参考文件,我们只需要复制一份即可

这里需要根据其提供的原配置文件,复制出三个配置文件:

  1. ​php-fpm.conf​​ fpm 的配置文件
cp php-fpm.conf.default php-fpm.conf
  1. ​php.ini​​ php 配置文件
cp php.ini.default php.ini
  1. ​www.conf​
cp php-fpm.d/www.conf.default php-fpm.d/www.conf

错误处理

把配置文件整好之后,启动 ​​php-fpm​​​ 失败,错误如下,请查看此处: nginx php-fpm 错误处理: ERROR: failed to open error_log (/usr/var/log/php-fpm.log): No such file or directory

Kyle@Kyles-MBP nginx % php-fpm 
[06-Oct-2020 10:14:08] ERROR: failed to open error_log (/usr/var/log/php-fpm.log): No such file or directory (2)
[06-Oct-2020 10:14:08] ERROR: failed to post process the configuration
[06-Oct-2020 10:14:08] ERROR: FPM initialization failed

四、 能够正常访问了

Nginx 配置基础,详细说明_mac_03


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  ehrZuhofWJiC   2024年05月17日   29   0   0 linuxsvn
  ehrZuhofWJiC   2024年05月17日   35   0   0 KVMlinux
  ehrZuhofWJiC   2024年05月17日   29   0   0 服务器linux
  ehrZuhofWJiC   2024年05月17日   37   0   0 jenkinsMac
zW4KfYJoPk6k