Nginx服务器部署详细代码实例

2025-12-08 20:50

本文主要是介绍Nginx服务器部署详细代码实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Nginx服务器部署详细代码实例》Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,:本文主要介绍Nginx服务器部署的相关资料,文中通过代码...

Nginx 服务器

Nginx是一个‌高性能、高并发、轻量级‌的开源 ‌Web 服务器‌软件

Nginx 高性能和高并发的核心就在于其‌事件驱动和‌异步非阻塞I/O模型;Nginx 通信可分为4个阶段:

  1. 进程启动:启动 Nginx 时,首先运行的是‌主进程;主要负责读取并验证配置文件,‌创建和管理子进程‌,绑定端口等;主进程本身不处理客户端连接或请求
  2. 创建工作进程:主进程会创建一或多个‌工作进程‌,工作进程的数量通常会根据 CPU 核心数自动设置;工作进程是真正处理客户端连接和请求的实体;所有工作javascript进程独立且平等,都运行在‌单线程‌中;工作进程的核心是使用一个‌事件驱动循环
  3. 事件驱动循环:每个工作进程内部都有一个持续的循环,称为事件循环;该模型允许一个‌单线程的工作进程同时管理数万个并发连接;
  4. 连接处理:当Nginx监听的端口出现新TCP请求时,主进程本身监听了这些端口,但它‌不会‌处理连接;内核会将这个新建立的连接‌交给其中一个工作进程,该工作进程开始在这个连接上处理 HTTP 请求/响应或其他协议

Nginx 使用‌共享内存区域‌来实现工作进程间的数据共享,主进程负责创建这些共享内存区域;

[root@server ~]# yum -y install nginx | tail -n 1
Complete!
[root@server ~]# systemctl enable nginx --now
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
[root@server ~]# firewall-cmd --add-service=http --permanent
success
[root@server ~]# firewall-cmd --reload
success

在浏览器地址栏输入Nginx服务器的IP地址或域名,如http://10.1.8.10;浏览器会发送HTTP请求到Nginx,Nginx处理请求并返回html内容;

默认返回/usr/share/nginx/html/index.html

使用该方法连接Nginx需配置监听80端口(HTTP)或443端口(HTTPS);

Nginx的主配置文件/etc/nginx/nginx.conf/etc/nginx/目录下包含了所有nginx的配置文件;

/etc/nginx/nginx.conf包含全局配置域网络连接配置域HTTP配置域;其中HTTP配置域内的server块是虚拟主机配置

# 全局配置域
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# 网络连接配置域
events {
    worker_connections 1024;
}
# HTTP配置域
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  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    # 虚拟主机配置
    server {
        listen       80;
        listen       [::]:80;
        server_name  www.gc.cloud;
    China编程    root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

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

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }

# 测试配置文件
[root@server ~]# nginx -t
nginx: the configuration filjavascripte /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

server块中主要参数作用如下:

  • listen 80;:监听80端口;下方的 listen [::]:80; 是监听IPv6端口;
  • server_name:域名;
  • root网站根目录;
  • index:默认首页文件;
  • location:location块;决定了‌如何处理不同的客户端请求路径‌
# location块语法
location [匹配模式] [匹配路径] {
    [配置指令]
}

location包含5种路径匹配模式:

  • location = /path:精确匹配;
  • location ^~ /path:前缀匹配(优先于正则);
  • location ~ .php$:正则匹配(区分大小写);
  • location ~* .(jpg|png)$:正则匹配(不区分大小写);
  • location /:通用匹配;
location块内常用指令作用
root设置文件根目录
alias路径别名
try_files尝试多个文件路径
proxy_pass反向代理到后端
index设置默认索引文件
rewriteURL 重写
add_header添加 HTTP 响应头
deny / allow访问控制

SSL/TLS 配置

SSL/TLS是加密通信的安全协议,在客户端和服务器之间建立‌加密通道;证书是服务器的数字身份证‌;

Nginx是SSL/TLS的‌执行者;

证书生成流程如下:

[root@server ~]# openssl genrsa -out www.key 2048
Generating RSA private key, 2048 bit long modulus
....+++
....+++
e is 65537 (0x10001)
[root@server ~]# openssl req -new -key www.key -out www.csr -subj "/C=CN/ST=js/L=NJ/O=LM/OU=DEVOPS/CN=www.gc.cloud/emailAddress=gc@gc.cloud"
[root@server ~]# openssl x509 -req -days 3650 -in www.csr -signkey www.key -out www.crt
Signature ok
subject=/C=CN/ST=JS/L=NJ/O=LM/OU=DEVOPS/CN=www.gc.cloud/emailAddress=gc@gc.cloud
Getting Private key

openssl genrsa -out www.key 2048‌生成一个2048位的RSA私钥文件(www.key),用于SSL/TLS加密通信的基础密钥;
openssl req -new -key www.key -out www.csr -subj "/C=CN/ST=JS/L=NJ/O=LM/OU=DEVOPS/CN=www.gc.cloud/emailAddress=gc@gc.cloud"‌用于创建证书签名请求文件(www.csr);subj参数定义了证书主体信息,其中CN参数必须与域名一致
openssl x509 -req -days 3650 -in www.csr -signkey www.key -out www.crt使用私钥(www.key)对CSR签名,生成有效期为3650天的自签名证书;

站点配置文件一般需要独立创建,以便于管理;一般位于/etc/nginx/sites-available/目录下;
首先配置证书相关参数

  • ssl_certificate:证书路径;
  • ssl_certificate_key:私钥路径;

之后还需在站点配置文件中配置启用HTTP重定向到HTTPS

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  www.gc.cloud;
    root         /usr/share/nginx/html;

    ssl_certChina编程ificate /www.crt;
    ssl_certificate_key /www.key;
}

server {
    listen       80;
    server_name  www.gc.cloud;
    root         /usr/share/nginx/html;
    return 301 https://$host$request_uri; # 重定向到HTTPS
}

443是HTTPS的默认端口,专门用于加密数据传输,而80端口用于明文HTTP

ssl参数用于启用SSL/TLS加密模块,使Nginx能处理加密请求;若省略ssl,即使监听443端口,Nginx也‌不会启用加密‌

配置完成后重启服务即可;

动态脚本

Nginx本身只能处理‌静态资源‌(HTML/css/图片),而PHP能给Nginx带来‌动态内容处理能力

PHP是为Web而生的服务器端脚本语言;通过与Nginx进行协同工作,能让静态网站变成可交互的智能应用

# 安装php与其扩展包
[root@server ~]# yum install -y php php-fpm | tail -n 1
Complete!
[root@server ~]# yum install -y php-gd php-common php-pear php-mbstring php-mcrypt | tail -n 1
Complete!

之后在站点配置文件中配置支持php;

location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass Unix:/run/php/php8.1-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fasthttp://www.chinasem.cncgi_script_name;
        include fastcgi_params;
    }
  • fastcgi_pass:指定PHP-FPM监听的地址和端口;上述写法适用于同一服务器环境,也可使用fastcgi_pass 127.0.0.1:9000; 配置支持跨服务器部署,但需保证在php-fpm.conf配置PHP-FPM监听该端口;
  • try_files:按顺序检查文件/目录;当访问的文件不存在时返回配置的文件地址,通常和fastcgi_index协同工作;
  • fastcgi_index:指定默认的PHP入口文件;‌优先级低于try_files
  • fastcgi_param SCRIPT_FILENAME:指定PHP脚本的完整路径;$document_root为网站根目录,$fastcgi_script_name为请求的PHP文件路径;
  • include fastcgi_params:包含预定义的FastCGI参数;

配置完成后就可以使用了;

反向代理

反向代理用于隐藏真实服务器;它接收用户请求,再转交给后端真实服务器,使用户不直接和真实服务器进行交互;

Nginx可以在站点配置文件中配置实现反向代理;

location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

通过语法检查并重启服务‌后就可以使用了;

总结

到此这篇关于Nginx服务器部署的文章就介绍到这了,更多相关Nginx服务器部署内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于Nginx服务器部署详细代码实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1156393

相关文章

Nginx 访问控制的多种方法

《Nginx访问控制的多种方法》本文系统介绍了Nginx实现Web访问控制的多种方法,包括IP黑白名单、路径/方法/参数控制、HTTP基本认证、防盗链机制、客户端证书校验、限速限流、地理位置控制等基... 目录一、IP 白名单与黑名单1. 允许/拒绝指定IP2. 全局黑名单二、基于路径、方法、参数的访问控制

nginx跨域访问配置的几种方法实现

《nginx跨域访问配置的几种方法实现》本文详细介绍了Nginx跨域配置方法,包括基本配置、只允许指定域名、携带Cookie的跨域、动态设置允许的Origin、支持不同路径的跨域控制、静态资源跨域以及... 目录一、基本跨域配置二、只允许指定域名跨域三、完整示例四、配置后重载 nginx五、注意事项六、支持

Prometheus+cpolar如何在手机上也能监控服务器状态?

《Prometheus+cpolar如何在手机上也能监控服务器状态?》本文强调了通过Cpolar这一内网穿透工具,轻松突破Prometheus仅限于局域网访问的限制,实现外网随时随地访问监控数据,教你... 目录前言1.安装prometheus2.安装cpolar实现随时随地开发3.配置公网地址4.保留固定

HTML5的input标签的`type`属性值详解和代码示例

《HTML5的input标签的`type`属性值详解和代码示例》HTML5的`input`标签提供了多种`type`属性值,用于创建不同类型的输入控件,满足用户输入的多样化需求,从文本输入、密码输入、... 目录一、引言二、文本类输入类型2.1 text2.2 password2.3 textarea(严格

windows下安装Nginx全过程

《windows下安装Nginx全过程》文章介绍了HTTP和反向代理服务器的概念,包括正向代理和反向代理的区别,并详细描述了如何安装和配置Nginx作为反向代理服务器... 目录概念代理正向代理反向代理安装基本属性nginx.conf查询结构属性使用运行重启停止总结概念是一个高性能的HTTP和反向代理we

检查 Nginx 是否启动的几种方法

《检查Nginx是否启动的几种方法》本文主要介绍了检查Nginx是否启动的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1. 使用 systemctl 命令(推荐)2. 使用 service 命令3. 检查进程是否存在4

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

SQL Server中行转列方法详细讲解

《SQLServer中行转列方法详细讲解》SQL行转列、列转行可以帮助我们更方便地处理数据,生成需要的报表和结果集,:本文主要介绍SQLServer中行转列方法的相关资料,需要的朋友可以参考下... 目录前言一、为什么需要行转列二、行转列的基本概念三、使用PIVOT运算符进行行转列1.创建示例数据表并插入数