编程技术分享平台

网站首页 > 技术教程 正文

高性能HTTP服务器Nginx介绍(高性能海量信息处理系统与服务器)

xnh888 2024-09-08 10:53:13 技术教程 26 ℃ 0 评论

Nginx是一个开源的HTTP服务器和反向代理服务器,也可以用作邮件代理服务。最初由俄罗斯人Igor Sysoev开发。根据Netcraft的信息,到目前为止,世界上最繁忙的网站中有25.53%通过nginx 服务或代理。比如Netflix,Dropbox,Wordpress.com等网站。

Nginx VS Apache HTTP Server

  • Apache 使用xml格式的配置文件,nginx使用c语言风格的配置语法
  • Apache 有多个.htaccess文件分散于各文件夹,会对性能有影响,Nginx是中心化的配置
  • Apache 可以使用添加模块(PHP,Python)的方式处理动态内容,Nginx需要依赖外部程序处理动态内容
  • 对静态内容,Nginx比Apache 更高效
  • Nginx天然具有缓存和负载均衡能力,Apache需要较复杂的模块配置来达到同样效果

安装

Nginx可适用于很多操作系统,这里以Ubuntu下的安装为例

运行命令:

apt update
apt upgrade
apt install nginx

检查安装是否成功

nginx -v 

nginx 是作为服务安装,可以用以下命令查看其状态

systemctl status nginx //查看nginx的运行状态
systemctl reload nginx //重新加载配置文件使配置文件更改生效
systemctl is-active nginx //查看nginx是否在线
systemctl start nginx //启动nginx服务
systemctl stop nginx //停止nginx服务

启动成功后在浏览器输入http://localhost:80会显示默认欢迎页面

简单配置

所有配置都在 /etc/nginx目录

主配置文件 /etc/nginx/nginx.conf,一般不需要修改该文件。

主配置文件中include了:

  • /etc/nginx/conf.d/*.conf
  • /etc/nginx/sites-enabled/*

配置一个虚拟主机

这里以mysite为例(名称可任意)

在/etc/nginx/conf.d/目录下创建文件 mysite.local.conf,文件名称最好和站点相关

 server {
 listen 80 default_server; //监听端口配置
 server_name mysite.local www.mysite.local;
 index index.html index.htm index.php; //按顺序查找index文件
 root /var/www/mysite.local; //放置站点文件的目录
 } 

将静态文件拷贝到目录/var/www/mysite.local文件夹

修改了配置文件后运行命令

nginx -t //该命令检查配置文件是否正确
systemctl reload nginx //重新加载配置文件使配置文件更改生效

配置location

location表示针对某些访问路径进行特殊配置

在上面配置文件mysite.local.conf中进行配置

 server {
 listen 80 default_server;
 server_name mysite.local www.mysite.local;
 index index.html index.htm index.php; //按顺序查找index文件
 root /var/www/mysite.local; //放置站点文件的目录
 location / {
 try_files $uri $uri/ =404
 }
 location /images {
 autoindex on; //让浏览器能看到服务器上的文件
 }
 error_page 404 /404.html;//自定义404页面 
 location =/404.html {
 internal; //表示该location只能被“内部的”请求调用
 }
 } 

上面的location配置自定义了404页面,并针对/images路径将autoindex打开,让浏览器能够查看images路径下的图片文件

配置log

主配置文件定义了默认的log位置,我们可以针对vhost自定义log文件位置

修改上面配置的mysite.local.conf文件

 server {
 listen 80 default_server;
 server_name mysite.local www.mysite.local;
 ......
 access_log /var/log/nginx/mysite.local.access.log; //配置log
 error_log /var/log/nginx/mysite.local.error.log; //错误信息日志
 ......
 } 

LAMP vs LEMP

很多年web站点使用的技术栈为LAMP(Linux Apache MySQL/MariaDB PHP/Python/Perl)

现在有了LEMP(Linux Nginx MySQL/MariaDB PHP/Python/Perl),其中E按发音代表nginx。Nginx还有很大的发展空间。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表