首页 > 系统相关 >Nginx的下载安装配置文件解析

Nginx的下载安装配置文件解析

时间:2024-07-16 22:57:29浏览次数:13  
标签:index name 配置文件 nginx server Nginx 下载安装 com example

一、Nginx的安装

1、下载安装包

下载nginx-1.21.6和master包
官网下载上传至服务器或者,直接用联网服务器下载都行,我这里使用的是虚拟机连接外网直接下载
wget http://nginx.org/download/nginx-1.21.6.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip

2、安装gcc

 yum -y install gcc

3、安装perl库

 yum -y install pcre pcre-devel

4、安装zlib库

 yum -y install zlib zlib-devel

5、预编译、编译、编译安装

./configure --prefix=/usr/local/nginx  
make  
make install  
cd /usr/local/nginx/sbin 安装完成后进入安装目录的sbin

6、启动Nginx

./nginx  启动
./nginx -s stop  快速停止
./nginx -s quit  在退出前完成已接受的连接请求
./nginx -s reload 重新加载配置

7、报错处理

如下图出现403 Forbidden报错
 root用户
问题一:/usr/local/nginx/html/index.html  |权限问题
问题二:#user nobady; |用户未启用,导致权限问题

 
 普通用户
vi /usr/local/nginx/conf/nginx.conf  |修改端口大于1024
如果不想或者不能以 root 用户运行 Nginx,则可以选择让 Nginx 监听一个大于 1024 的端口(例如 8080)。在配置文件中将端口设置为大于 1024,然后使用防火墙或者代理服务器将流量转发到这个端口。

8、将下列脚本配置到系统服务中

以实现使用system命令进行操作
vi /lib/systemd/system/nginx.service |添加目录
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
脚本添加后
重新加载系统服务
systemctl daemon-reloade

二、nginx配置文件示例及其解析

 nginx的配置文件通常位于 /etc/nginx/nginx.conf 或 /usr/local/nginx/conf/nginx.conf,具体位置取决于你的安装方式和操作系统。

下面是一个简单的nginx配置文件示例及其解析:

nginx
# 注释以 '#' 开头
# 全局配置段
user nginx;  # 指定nginx运行的用户
worker_processes auto;  # 自动设置工作进程的数量

events {
    worker_connections 1024;  # 每个工作进程的最大连接数
}

http {
    include       mime.types;  # 包含MIME类型配置文件
    default_type  application/octet-stream;  # 默认MIME类型

    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  /var/log/nginx/access.log  main;  # 访问日志文件位置及格式

    sendfile        on;  # 开启高效的文件传输模式
    tcp_nopush     on;  # 减少发送数据包的数量,提高性能
    tcp_nodelay    on;  # 禁用Nagle算法

    keepalive_timeout  65;  # 客户端连接保持超时时间
    gzip  on;  # 开启gzip压缩

    include /etc/nginx/conf.d/*.conf;  # 包含其他配置文件

    server {
        listen       80;  # 监听80端口
        server_name  example.com;  # 域名

        location / {
            root   /usr/share/nginx/html;  # 根目录
            index  index.html index.htm;  # 默认索引文件
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
}
配置文件解析:
全局配置段 (user, worker_processes, events): 指定nginx运行的用户、设置工作进程数量、定义事件模块(如最大连接数)。

-http块: 包含HTTP服务器的配置,包括MIME类型、默认类型、日志格式、访问日志位置、文件传输模式、TCP优化、保持连接超时、gzip压缩等。

-server块: 定义一个虚拟主机(server),监听80端口,处理来自example.com的请求。

  --listen: 指定监听的端口。
  --server_name: 指定主机名。
  --location / {...}: 处理URI路径,指定根目录和默认索引文件。
  --error_page 和 location = /50x.html: 定义处理错误页面的方式。
-include: 引入其他配置文件,如/etc/nginx/conf.d/*.conf中的其他虚拟主机配置文件。

nginx配置文件采用了简洁明了的语法,可以通过修改这些配置来定制服务器的行为,例如添加新的虚拟主机、修改日志格式、调整性能参数等。配置文件的语法相对直观,使得用户能够快速理解和修改服务器行为。

三、

三、Nginx的基本使用

1、Nginx虚拟主机域名配置

Nginx支持多种方式来配置虚拟主机(Virtual Hosts),使得你可以在同一台服务器上托管多个域名或网站。
以下是nginx中常用的几种虚拟主机配置方法:
这是最常见的虚拟主机配置方式,基于不同的域名或主机名来区分不同的网站。例如:
=========================================================================================
方式一、基于Server名称的虚拟主机:
server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com;
    index index.html index.htm;
}

server {
    listen 80;
    server_name anotherdomain.com;

    root /var/www/anotherdomain.com;
    index index.html index.htm;
}
这里定义了两个server块,分别用于处理 example.com 和 www.example.com 以及 anotherdomain.com 的请求,每个server块配置了对应网站的根目录和默认索引文件。
=========================================================================================
方式二、基于IP地址和端口的虚拟主机:
有时候可以根据服务器的IP地址来区分虚拟主机,这在服务器有多个IP地址时比较有用。例如:

server {
    listen 80;
    server_name example.com;

    root /var/www/example.com;
    index index.html index.htm;
}

server {
    listen 80;
    server_name 192.168.1.100;

    root /var/www/default;
    index index.html index.htm;
}
第二个server块监听特定的IP地址(例如192.168.1.100),处理未在其他server块中定义的所有请求。
=========================================================================================
方式三、基于端口的虚拟主机:
如果需要在不同的端口上提供不同的网站,可以按照以下方式配置:

server {
    listen 80;
    server_name example.com;

    root /var/www/example.com;
    index index.html index.htm;
}

server {
    listen 8080;
    server_name example.com;

    root /var/www/example.com-alt;
    index index.html index.htm;
}
这里第一个server块监听标准的HTTP端口(80),而第二个server块监听非标准的HTTP端口(8080),但它们都使用相同的 server_name 来区分虚拟主机。
=========================================================================================
方式四、默认服务器配置:
nginx允许定义一个默认的服务器配置,用于处理未匹配到具体server_name的请求。例如:

server {
    listen 80 default_server;
    server_name _;

    root /var/www/default;
    index index.html index.htm;
}
这个配置中 server_name _; 表示匹配所有域名(因为 _ 是通配符),用于处理未匹配到其他server块的请求。

这些方法可以单独使用或结合使用,使得nginx非常灵活地支持各种虚拟主机配置需求。通过合理的配置,可以有效地在同一台服务器上托管多个网站,并根据需要进行灵活的调整和管理。

2、Nginx的servername多种匹配方式

在 Nginx 中,server_name 指令用于定义虚拟主机的域名或者 IP 地址,它支持多种匹配方式来指定主机名,以便根据请求的域名或 IP 地址来决定哪个虚拟主机配置块会处理该请求。以下是 server_name 的多种匹配方式:

1、精确匹配:
server_name example.com;
这种方式指定了一个确切的域名,只有当请求的域名为 example.com 时,对应的 server 块才会被选中处理请求。
=========================================================================================================================================
2、通配符前缀匹配:
server_name *.example.com;
使用 *. 表示通配符前缀,这样可以匹配所有以 .example.com 结尾的子域名,例如 www.example.com、blog.example.com 等。
=========================================================================================================================================
3、通配符后缀匹配:
server_name www.example.*;
在域名的结尾使用 *.,这种方式可以匹配所有以 www.example. 开头的域名,例如 www.example.com、www.example.net 等。
=========================================================================================================================================
4、正则表达式匹配:
server_name ~^www\.example\.(com|net)$;
使用 ~ 后跟正则表达式来进行匹配。在上面的例子中,匹配以 www.example.com 或 www.example.net 结尾的域名。
=========================================================================================================================================
5、空值或者 _ 匹配:
server_name _;
当指定为 _ 或者不设置具体的域名时,这个 server 块将作为默认服务器配置,用于处理没有与之它匹配的 server_name 的请求。通常用于设定默认的虚拟主机。
=========================================================================================================================================
在 Nginx 中,server_name 支持使用上述多种匹配方式,可以根据具体的需求和场景来配置不同的虚拟主机。配置正确的 server_name 是确保请求能够被正确路由到相应虚拟主机的重要步骤之一。

标签:index,name,配置文件,nginx,server,Nginx,下载安装,com,example
From: https://blog.csdn.net/weixin_43145281/article/details/131043803

相关文章

  • 从零手写实现 nginx-29-try_files 指令
    前言大家好,我是老马。很高兴遇到你。我们为java开发者实现了java版本的nginxhttps://github.com/houbb/nginx4j如果你想知道servlet如何处理的,可以参考我的另一个项目:手写从零实现简易版tomcatminicat手写nginx系列如果你对nginx原理感兴趣,可以阅读:从零......
  • 关于静态文件目录与模板引用和Nginx location块的适配设置
    项目配置文件内关于静态文件的设置项#静态文件的URL前缀STATIC_URL='/static/'#项目根目录的静态文件目录STATICFILES_DIRS=[os.path.join(BASE_DIR,'static'),os.path.join(BASE_DIR,'parallel/static'),os.path.join(BASE_DIR,'blog/static&#......
  • C#之构建配置文件实现获取并保存功能
    实现工具类,会创建一个Config.ini的配置文件usingSystem;usingSystem.IO;usingSystem.Runtime.InteropServices;usingSystem.Text;namespaceConfigUtil{classConfigUtils{#regionAPI函数声明[DllImport("kernel32")]//返回0表示失败,非......
  • golang使用yaml文件做配置文件
    yaml配置文件host:localhost:3306user:rootpwd:112233dbname:1安装yaml读取工具gogetgopkg.in/yaml.v2从yaml文件读取配置packagemain​import("fmt""gopkg.in/yaml.v2""os")​typeConfstruct{Host string`yaml:"host&qu......
  • nginx启动命令 + 注意
    参考链接——https://www.cnblogs.com/taiyonghai/p/9402734.html 下载地址——https://nginx.org/en/download.html下载stableversion下的版本  ——————启动虽然直接双击nginx.exe启动也可以,但它启动之后没有提示,还需要去任务管理器中确认就很麻烦这里记一下......
  • nginx对访问路径进行限制【部分接口可以内外网访问、剩余接口只可以内网访问】
    前言  最近这段时间的项目被查出了安全漏洞、然后做了一些安全措施的整改。整改后、BOSS又提了个很有意思的思路。  涉及到小程序端的请求接口、内外网都可以访问。  涉及到后台管理的请求接口、只允许内网访问。开干开干  由于项目引进了gateway网关、一开始的时......
  • LogRotate 切割 Nginx 日志
     发布于 2023-12-0410:20:327140举报文章被收录于专栏:码农UP2U一直以来做日志切割都是使用shell+crontab来搞,shell脚本可以在网上找到各种版本的,改改就用了,懒省事。这样的做法很传统,却忽略了系统的给我们提供的优秀的工具——logrotate。......
  • nginx生成自签名SSL证书配置HTTPS
    一、安装nginxnginx必须有"--with-http_ssl_module"模块查看nginx安装的模块:root@ecs-7398:/usr/local/nginx#cd/usr/local/nginx/root@ecs-7398:/usr/local/nginx#./sbin/nginx-Vnginxversion:nginx/1.20.2builtbygcc9.4.0(Ubuntu9.4.0-1ubuntu1~20.04.2)......
  • 微服务项目配置文件参数安全方案
    项目环境springboot系列项目maven依赖管理任意配置中心(apollo/配置文件/k8sConfigMapSecrets)项目代码添加依赖<dependency>    <groupId>com.github.ulisesbocchio</groupId>    <artifactId>jasypt-spring-boot-starter</artifactId>    <version>${ver......
  • nginx ./nginx -s reload 工作进程pid与实际不一致导致平滑重启报错
    某次修改nginx配置后使用./nginx-sreload重启nginx,结果报错,如图所示,去kill工作进程的时候显示找不到该进程原因是位于nginx/logs下的nginx.pid中的pid和实际不一致造成的nginx.pid文件是Nginxweb服务器在启动时创建的一个进程标识符(PID)文件。这个文件包含......