ubuntu环境下搭建和配置使用nginx服务器

本文详细介绍了在Ubuntu 14.04系统中搭建和配置Nginx服务器的步骤,包括安装Nginx、理解其工作原理、配置文件详解、静态内容服务、简单代理服务器及FastCGI设置。通过示例配置文件,读者可以学习如何管理Nginx的工作进程,以及实现静态资源服务和代理转发功能。

这篇文章主要讲述如何在ubuntu环境下搭建和配置使用nginx服务器。

云服务系统,操作系统是ubuntu 14.04,也可以用本地的电脑进行配置,操作步骤都是相同的,在ip访问的时候可能有点不同。


主要翻译官网的文章以及自己的安装过程总结。

1. 安装nginx_signing.key

这个文件的主要作用是给nginx仓库签名授权以及消除在安装过程中因为缺少PGP的警告。

不用太理解是怎么回事,大概就是申请权限之类的。

文件的下载目录,右键保存就可以

https://nginx.org/keys/nginx_signing.key

安装命令

sudo apt-key add nginx_signing.key

2. 更新源,请按照下面系统对应

VersionCodenameSupported Platforms
12.04precisex86_64, i386
14.04trustyx86_64, i386, aarch64/arm64
16.04xenialx86_64, i386, ppc64el, aarch64/arm64
16.10yakketyx86_64, i386
把这两句话加入到 /etc/apt/sources.list文件中

deb http://nginx.org/packages/debian/ codename nginx
deb-src http://nginx.org/packages/debian/ codename nginx
其中的codename是根据系统来选的,我的系统是14.04,所以选择trusty

具体的示例

root@wangrl:/home# vim /etc/apt/sources.list
deb http://nginx.org/packages/ubuntu/ trusty nginx
deb-src http://nginx.org/packages/ubuntu/ trusty nginx

3. 然后下面两个命令完成安装:

apt-get update
apt-get install nginx
4. 验证安装,可以直接在浏览器上输入ip地址。

47.93.38.195
会弹出提示:

Welcome to nginx!

If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.

For online documentation and support please refer tonginx.org.
Commercial support is available atnginx.com.

Thank you for using nginx.

表明已经安装成功,接下来是讲述nginx服务器基本配置和使用。


在确保nginx已经安装的情况下,接着介绍下面的内容。

nginx 有一个主进程和几个工作进程,主进程的作用是读取配置文件,管理工作进程,工作进程做真正的处理请求。nginx 采用event-based 模型和OS-dependent机制更有效地把请求分发给各个工作进程。工作进程的数量已经在配置文件中定义,可以是固定的数目也可以根据CPU核的数量动态地调整。

nginx和各个模块的工作方式都已经在配置文件中定义。默认情况下文件的名称是nginx.conf,放在/usr/local/nginx/conf, /etc/nginx, 或者/usr/local/etc/nginx等目录下。

5. 开启/暂停/重新加载配置

一旦nginx服务起起来,就可以通过如下命令进行控制

nginx -s signal

其中signal的信号

stop--表示快速关闭

quit--优雅地关闭

reload--重新加载配置文件

reopen--重新打开log文件

比如终止工作的线程服务可以使用

nginx -s quit
如果改变配置文件则需要

nginx -s reload
命令执行之后才能生效,一旦主线程收到这个命令,它就会检查新的配置文件的语法是否正确,然后让配置生效。如果成功之后,主线程会新开一个工作进程,然后发送消息通知旧的工作进程,要求旧的进程停止。

同时也可以发送一些unix命令给nginx服务器,比如kill。这个例子中,信号直接通过给定的进程ID发送给进程。默认情况下nginx服务器的nginx.id在/usr/local/nginx/logs或者/var/run目录下。如果主线程的ID是1628,那么可以直接发送QUIT命令让主线程停止。

kill -s QUIT 1628
6. 配置文件的结构

nginx各个模块都是通过指定的配置文件进行控制的。

指令可以是单独的指令,也可以是块指令,单独的指令相当于一条语句,包含指令的名称,和参数之间通过空格断开,指令的最后用分号结束。块指令和单独的指令有相同的语法结构,除了块指令是用一系列的{}来表示结尾。块指令里面的指令称之为内容,比如(events, http, server location).

在配置文件中,如果指令在所有的指令之外称这个指令为主指令,events 和http就是主指令,server在http之内,locaton在server之内。

其余的以#开头的指令都是注释的内容。

7. 静态内容服务

服务器的一个重要功能就是静态网络服务比如图片和静态的html网页。下面是一个实例,取决于需求,文件可以放置在不同的目录中,比如/data/www/(包含着html文件)以及/data/images/(包含图片)。这需要编辑配置文件,在http指令中包含server指令然后包含两个location位置。

第一步是创建一个sample.html的网页文件放到/dada/www目录中,然后在/data/images/目录中放置一些图片

下面是一个最简单的html示例

<html>
<head></head>
<body>hello</body>
</html>
接下来是打开配置文件,默认的配置文件已经有些服务器指令实例,绝大部分都需要注释掉它们。

先注释掉所有的指令,写上如下指令块

按照刚刚解释的内容

http {
     server {
     }
}
通常来说配置文件可以很多的server块指令,每个server都是通过监听的端口号区别开。一旦nginx决定是哪个server处理请求,它就会打开location中的相对应的文件夹来获取URI指定的内容。

在location块指令中增加如下内容

location / {
    root /data/www;
}

这个位置会和前面的指定的URI相比对,URI会加上root指令内的路径,也就是/data/www,去组成需要文件的路径。如果这里有好几个同时满足location位置的路径,location会提供最短路径的那个,如果其它的路径都不能够提供相对应的文件。

现在增加第二个locaiton指令

location /images/ {
    root /data;
}
它需要请求路径中包含/images/,前面说道的 / 也是满足要求的,在这个路径不满足的情况下,会使用 / 路径。

下面是一个完整的html配置文件

http {
    server / {
        root /data/www;
    }
    server /images/ {
        root /data;
    }
}

这个配置文件会监听标准的80端口,可以通过http://localhost/进行访问。如果一个URI请求以/images/开头,那么这个server指令就会发送/data/images目录下的文件,比如回应http://localhost/images/example.png,nginx服务器会发送/data/images/example.png文件。如果这个文件不存在,nginx会提醒404错误。不是以/images开头的URI请求会被映射到/data/www目录中。比如URI地址是http://localhost/some/examples.html,服务器会发送/data/www/some/examples.html文件。

需要配置重新生效,需要执行下面的指令

nginx -s reload

在一些条件下服务器可能没有像上述描述的工作,你可以检查access.log或者error.log文件,通常是在/usr/local/nginx/logs/或者/var/log/nginx目录下。

8. 建立简单的代理服务器(proxy server)

nginx服务起还有一个经常被使用的用途是当做代理服务器,代理服务器的意思是指一个服务起接收到请求,然后把这个请求传递给受理服务器(proxied servers)处理,然后从受理服务器中得到相应的回应发送给请求对象。如果不清楚的可以查阅简单的书籍很快就能明白这句话什么意思。

下面会配置一个基本的代理服务器,这个服务器的作用是对于图片请求会直接在本地进行处理,其它的请求都会发送个给受理服务器进行处理。在这个例子中,两个server都定义在一个nginx实例中。

首先,定义一个受理服务器,在nginx配置文件中加入一个server块指令

server {
    listen 8080;
    root /data/up1;

    location / {
    }
}

这个简单的服务器指令配置监听8080端口(之前的服务器端口没有指定是因为已经默认配置了标准的80端口),对于所有的请求都会用本地的/data/up1目录。

创建这个文件,然后放置一个index.html文件到其中。注意root指令放置在server指令中,在location中没有包含自己的root指令的时候这个server的root指令就会被location指令使用。

下一步使用之前已经学习的服务器配置,修改它让它成为一个代理服务器。在location块指令中,放置一个proxy_pass指令,名字 受理服务器指定的端口号,,这里使用(http://localhost:8080):

server {
    location / {
        proxy_pass http://localhost:8080;
    }
    locaiton /images/ {
        root /data;
    }
}
接着我们修改上面第二个的location块指令,它会把所有/images/前缀的请求映射到服务器的/data/images/目录下,为了是它能够只响应指定文件的请求,需要更改location块指令:

location ~ \.(gif|jpg|png)$ {
    root /data/images;
}
这个参数是一个正则表达式,对应所有的以.gif .jpg .png结尾的URI请求。一个正则表达式应该以~开头。对应的请求会被映射到/data/images目录下。

nginx服务器在处理用户请求的时候,首先会检查有特殊前缀的location指令,记住最长的location指令的前缀,然后再检查正则表达式。如果这里有一个合乎要求的的正则表达式,nginx会选择这个location指令,如果没有则会选择之前的。

下面是一个代理服务器的配置

server {
    location / {
        proxy_pass http://localhost:8080/;
    }
    location ~ \.(gif|jpg|png)$ {
        root /data/images;
    }
}
这个服务器会过滤出所有以.gif .jpg .png结尾的请求,然后把它们映射到/data/images目录下(URI地址加上root指令的参数),会把其它的所有的请求发送到上述配置的受理服务器中。

为了使新的配置生效,需要发送reload信号给nginx服务器。

9. 设置快速FastCGI代理

nginx可以把请求路由到FastCGI服务器中,FastCGI服务器里可以有各种架构以及使用各种编程语言比如php。

最简单的FastCGI配置是讲proxy_pass指令改成fastcgi_pass指令,fastcgi_param指令将请求传递给FastCGI服务器。假设一个FastCGI服务起可以通过localhost:9000端口访问,以之前配置代理服务器为基础,可以将配置文件写成下面这个样子。

server {
    location / {
        fastcgi_pass  localhost:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param QUERY_STRING    $query_string;
    }

    location ~ \.(gif|jpg|png)$ {
        root /data/images;
    }
}
这个会将所有的的除了静态图片的请求路由到FastCGI服务器中。







代码转载自:https://pan.quark.cn/s/8ce4326d996e 对于在 CentOS 7 系统中修改网卡配置文件后无法使设置生效的情况,经过实践验证,可以通过使用 nmcli 命令来进行调整。完成修改之后,需要重新启动虚拟机以使更改生效,这样操作流程即告完成。如果设置仍然无法生效,则表明虚拟机在启动过程中所获取的 IP 地址配置并非针对 eth0,此时可以对其它网卡的配置文件进行修改或将其移除。在 CentOS 7 系统中,网络配置的管理机制与早期版本存在差异,主要体现为采用了 Network Manager 服务来负责网络接口的管理。在某些情形下,尽管修改了 `/etc/sysconfig/network-scripts` 目录下的 `ifcfg-eth0` 文件,但网络配置却能即时生效。此类问题的发生通常源于 CentOS 7 采用了不同于以往的配置读取方法。接下来将具体阐述如何借助 nmcli 命令来处理这一挑战。 以 root 用户身份登录系统并打开终端界面。nmcli 是 Network Manager 提供的命令行界面工具,它支持在命令行环境下执行网络连接的建立、编辑、查询及管理任务。针对修改 eth0 网卡配置的需求,可以遵循以下步骤进行操作: 1. 导航至 `/etc/sysconfig/network-scripts` 目录: ``` cd /etc/sysconfig/network-scripts ``` 2. 检查该目录内是否存在 `ifcfg-eth0.bak` 文件,该备份文件可能是先前调整配置时遗留下来的,若存在可能造成冲突。若发现该文件,可以选择将其删除: ``` [root@localhost netw...
代码转载自:https://pan.quark.cn/s/46fd08fb879c 网管教程 从入门到精通软件篇 ★一。★详尽的xp修复控制台指令及其应用!!! 放入xp(2000)的光盘,安装时选择R,执行修复! Windows XP(涵盖 Windows 2000)的控制台指令是在系统遭遇某些意外状况时的一种极具效用的诊断、检测以及恢复系统功能的工具。笔者确实一直期望能够将这方面的指令进行归纳,此次由老范辛苦整理了这份极具价值的秘籍。 Bootcfg bootcfg 命令用于启动配置与故障恢复(对大多数计算机而言,即 boot.ini 文件)。 带有特定参数的 bootcfg 命令仅在运用故障恢复控制台时方可使用。能够在命令行界面下运用带有不同参数的 bootcfg 命令。 用法: bootcfg /default 设定默认引导选项。 bootcfg /add 向引导清单中增添 Windows 安装。 bootcfg /rebuild 重复整个 Windows 安装流程并让用户选择需添加的项目。 注意:运用 bootcfg /rebuild 之前,应先借助 bootcfg /copy 命令备份 boot.ini 文件。 bootcfg /scan 探查用于 Windows 安装的全部磁盘并展示结果。 注意:这些结果被静态存储,并用于当前会话。若在当前会话期间磁盘配置发生变动,为获取更新的探查结果,必须先重启计算机,然后再次探查磁盘。 bootcfg /list 列示引导清单中已有的项目。 bootcfg /disableredirect 在启动引导程序中禁用重定向。 bootcfg /redirect [ PortBaudRrate] |[ useBio...
代码下载链接: https://pan.quark.cn/s/fc524f791b68 AA制程,即Active Alignment,被理解为主动对准,是一种用于确定零部件装配中相对位置的方法。在摄像头封装阶段,涉及图像传感器、镜座、马达、镜头、线路板等多个部件的重复组装,而传统的封装设备如CSP及COB等,均是依据设备设定的参数进行零部件的移动装配,因而零部件的叠加误差会逐渐增大,最终在摄像头上表现为拍照最清晰的位置可能偏离画面中心、四边清晰度不均等现象。伴随智能手机和其他高端电子产品的普及,摄像头模组的性能正日益受到重视。高分辨率、卓越的低光表现以及稳定视频输出是现代用户所期望的。在摄像头模组的制造环节,各部件的精准定位对成像质量具有决定性作用。因此,一种名为“AA制程”(Active Alignment)的前沿技术被开发出来,成为摄像头精密对准的核心技术。 AA制程,即Active Alignment,是一种在摄像头封装过程中应用的主动对准方法。该方法在多个组件装配阶段发挥作用,涵盖图像传感器、镜座、马达、镜头和线路板等部件。传统的封装方式,例如CSP(Chip Scale Package)和COB(Chip On Board),依赖于设备预设的参数进行组装,但随着组件数量的增加,误差也会累积,最终影响摄像头的表现。例如在成像质量上可能出现中心位置偏移、四角清晰度不一致等问题。 AA制程技术的核心在于实时监测与主动调整。在组装过程中,它借助先进的检测设备持续监控半成品的状态,并根据实时信息对组装部件进行精确修正,从而显著降低装配误差。通过这种技术,能够确保摄像头模组中各组件的相对位置准确无误,从而使得最终的成像效果更加稳定,特别是在中心区域和四角的清晰度上...
内容概要:本文介绍了一套基于Matlab实现的光子晶体90度弯曲波导的二维时域有限差分法(2D FDTD)仿真代码,旨在通过数值模拟手段深入研究光子晶体波导中的光传播特性。该资源聚焦于电磁场与光子学领域的仿真技术应用,系统实现了FDTD算法在复杂介质结构中的建模过程,涵盖空间网格剖分、时间步进迭代、完美匹配层(UPML)边界条件处理、总场散射场(TFSF)激励源设置、介电常数分布定义及电磁场演化可视化等核心模块,能够有效分析光在90度弯曲波导中的传输效率、模式分布与反射损耗等关键性能指标。; 适合人群:具备电磁场理论基础和Matlab编程能力的研究生、科研人员以及从事光子晶体器件设计与仿真的工程技术人员。; 使用场景及目标:①用于教学演示FDTD方法的基本原理与算法流程,帮助理解麦克斯韦方程的离散化求解过程;②支撑科研工作中对光子晶体弯曲波导结构的传输特性进行仿真分析与性能优化;③作为开发更复杂光子集成器件(如分束器、滤波器)数值仿真工具的基础框架; 阅读建议:建议使用者结合经典FDTD教材(如Taflove著作)深入理解算法理论,并在Matlab环境中逐模块调试代码,重点关注电场与磁场的交替更新过程、UPML吸收边界的设计实现以及TFSF源的引入方式,从而全面提升对时域电磁仿真机制的掌握与应用能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值