Nginx配置文件详解及多站点配置

Nginx配置文件详解

配置文件在 /etc/nginx/nginx.conf
nginx root目录修改报错403解决办法
chmod -R 755 目录(/usr/share/nginx/html)
修改nginx用户为其所有者
chown -R nginx_user:nginx_user /usr/share/nginx/html

# nginx运行的用户名
user nginx;
# nginx启动进程,通常设置成和cpu的数量相等,这里为自动
worker_processes auto;

# errorlog文件位置
error_log /var/log/nginx/error.log;
# pid文件地址,记录了nginx的pid,方便进程管理
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
# 用来加载其他动态模块的配置
include /usr/share/nginx/modules/*.conf;

# 工作模式和连接数上限
events {
    # 每个worker_processes的最大并发链接数
    # 并发总数:worker_processes*worker_connections
    worker_connections 1024;
}

# 与提供http服务相关的一些配置参数类似的还有mail
http {
    # 设置日志的格式
    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记录访问的用户、页面、浏览器、ip和其他的访问信息
    access_log  /var/log/nginx/access.log  main;

    # 这部分下面会单独解释
    # 设置nginx是否使用sendfile函数输出文件
    sendfile            on;
    # 数据包最大时发包(使用Nagle算法)
    tcp_nopush          on;
    # 立刻发送数据包(禁用Nagle算法)
    tcp_nodelay         on;
    # 链接超时时间
    keepalive_timeout   65;
    # 这个我也不清楚...
    types_hash_max_size 2048;

    # 引入文件扩展名与文件类型映射表
    include             /etc/nginx/mime.types;
    # 默认文件类型
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    # http服务上支持若干虚拟主机。
    # 每个虚拟主机一个对应的server配置项
    # 配置项里面包含该虚拟主机相关的配置。
    server {
        # 端口
        listen       80 default_server;
        listen       [::]:80 default_server;
        # 访问的域名
        server_name  _;
        # 默认网站根目录(www目录)
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.

        include /etc/nginx/default.d/*.conf;

        # 默认请求
        location / {
        }

        # 错误页(404)
        error_page 404 /404.html;
            location = /40x.html {
        }

        # 错误页(50X)
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
 # 这里新加的
        # PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI协议默认配置.
        # Fastcgi服务器和程序(PHP,Python)沟通的协议.
        location ~ \.php$ {
            # 设置监听端口
            fastcgi_pass   127.0.0.1:9000;
            # 设置nginx的默认首页文件(可以删除)
            fastcgi_index  index.php;
            # 设置脚本文件请求的路径
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            # 引入fastcgi的配置文件
            include        fastcgi_params;
        }

    }
}

更详细的配置在此:更多

多站点配置

在Nginx配置目录下,创建一个”vhost”目录。本例假设Nginx是默认安装,配置目录在”/etc/nginx”

mkdir /etc/nginx/vhost

创建siteA的配置文件

 vi /etc/nginx/vhost/test1.conf

配置文件内容

server {
    listen       80;                        # 监听端口
    server_name nginx1.shadowwu.club;    # 站点域名
    root  /usr/share/nginx/html/nginx1.shadowwu.club;              # 站点根目录
    index index.php index.html index.htm;   # 默认导航页

    location / {
        # WordPress固定链接URL重写
        if (!-e $request_filename) {
            rewrite (.*) /index.php;
        }
    }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
        # 这里新加的
        # PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI协议默认配置.
        # Fastcgi服务器和程序(PHP,Python)沟通的协议.
        location ~ \.php$ {
            # 设置监听端口
            fastcgi_pass   127.0.0.1:9000;
            # 设置nginx的默认首页文件(上面已经设置过了,可以删除)
            fastcgi_index  index.php;
            # 设置脚本文件请求的路径
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            # 引入fastcgi的配置文件
            include        fastcgi_params;
        }

}

新建站点根目录

mkdir /usr/share/nginx/html/nginx1.shadowwu.club
cd /usr/share/nginx/html/nginx1.shadowwu.club
vim index.php

引入站点配置文件

vim /etc/nginx/nginx.conf
在http下末尾添加 include /etc/nginx/vhost/*.conf;
http {
    ...
    include /etc/nginx/vhost/*.conf;
}

重启nginx

systemctl restart nginx

配置dns解析后访问nginx1.shadowwu.club
出现返回application/octet-stream类型的数据
说明nginx的默认响应返回的Content-Type是application/octet-stream

打开配置文件

vim /etc/nginx/nginx.conf

修改

default_type application/octet-stream
改为
text/html

重启服务器

systemctl restart nginx

站点2配置

vi /etc/nginx/vhost/test2.conf
server {
    listen       80;                        # 监听端口
    server_name nginx2.shadowwu.club;    # 站点域名
    root  /usr/share/nginx/html/nginx2.shadowwu.club;              # 站点根目录
    index index.php index.html index.htm;   # 默认导航页

    location / {
        # WordPress固定链接URL重写
        if (!-e $request_filename) {
            rewrite (.*) /index.php;
        }
    }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
        # 这里新加的
        # PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI协议默认配置.
        # Fastcgi服务器和程序(PHP,Python)沟通的协议.
        location ~ \.php$ {
            # 设置监听端口
            fastcgi_pass   127.0.0.1:9000;
            # 设置nginx的默认首页文件(上面已经设置过了,可以删除)
            fastcgi_index  index.php;
            # 设置脚本文件请求的路径
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            # 引入fastcgi的配置文件
            include        fastcgi_params;
        }

}

新建站点2根目录

mkdir /usr/share/nginx/html/nginx2.shadowwu.club
cd  /usr/share/nginx/html/nginx2.shadowwu.club
vim index.php

重启服务器即可

systemctl restart nginx

闲言碎语

到此Nginx的多站点配置结束,接下来是Nginx的SSL配置教程。

点赞

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注