Nginx安装配置详解

不论是本地开发,还是远程到 Server 开发,还是给提供 demo 给人看效果,我们时常需要对 Nginx 做配置,Nginx 的配置项相当多,如果考虑性能配置起来会比较麻烦。不过,我们往往只是需要一个静态 Server,或者一个反向代理 Server,这对 Nginx 来说小菜一碟。

简介

Nginx 的安装:

# CentOS
yum install nginx;
# Ubuntu
sudo apt-get install nginx;
# Mac
brew install nginx;

一般可以在/etc/nginx/nginx.conf中配置,启动参数为:

# 启动
nginx -s start;
# 重新启动,热启动,修改配置重启不影响线上
nginx -s reload;
# 关闭
nginx -s stop;
# 修改配置后,可以通过下面的命令测试是否有语法错误
nginx -t;

-s,signal,意思就是向 nginx 发送start|reload|stop命令,还是很好理解的。先看一个最简单的nginx.conf配置:

events {
    # 需要保留这一个段落,可以为空
}
http {
    server {
        listen 127.0.0.1:8888;
        location / {
            root /home/chenya/test/;
        }
    }
}

启动后,访问htttp://127.0.0.1:8888,如果/home/chenya/test/下有index.html文件就会展示index.html的内容,否则返回404

Nginx 配置一个 Web 服务器

以下对配置 Web 服务器的参数做简单说明,包括如何配置端口、域名,如何处理请求,如何响应请求。

1、 虚拟主机和请求的分发

域名和端口的配置

listen 127.0.0.1:8000;
listen *:8000;
listen localhost:8000;
# IPV6
listen [::]:8000;
# other params
listen 443 default_serer ssl;
listen 127.0.0.1 default_server accept_filter=dataready backlog=1024

主机名配置

server_name www.chenya.site  chenya.site
server_name *.chenya.com
server_name ~^\.chenya\.com$

URI 匹配

location = / {
    # 完全匹配  =
    # 大小写敏感 ~
    # 忽略大小写 ~*
}
location ^~ /images/ {
    # 前半部分匹配 ^~
    # 可以使用正则,如:
    # location ~* \.(gif|jpg|png)$ { }
}
location / {
    # 如果以上都未匹配,会进入这里
}

2、 文件路径的定义

根目录设置

location / {
    root /home/chenya/test/;
}

别名设置

location /blog {
    alias /home/chenya/www/blog/;
}
location ~ ^/blog/(\d+)/([\w-]+)$ {
    # /blog/20141202/article-name
    # -> /blog/20141202-article-name.md
    alias /home/chenya/www/blog/$1-$2.md;
}

首页设置

index /html/index.html /php/index.php;

重定向页面设置

error_page    404         /404.html;
error_page    502  503    /50x.html;
error_page    404  =200   /1x1.gif;
location / {
    error_page  404 @fallback;
}
location @fallback {
    # 将请求反向代理到上游服务器处理
    proxy_pass http://localhost:9000;
}

try_files 设置

try_files $uri $uri.html $uri/index.html @other;
location @other {
    # 尝试寻找匹配 uri 的文件,失败了就会转到上游处理
    proxy_pass  http://localhost:9000;
}
location / {
    # 尝试寻找匹配 uri 的文件,没找到直接返回 502
    try_files $uri $uri.html =502;
}

Nginx 配置反向代理服务器

反向代理(reserve proxy)方式是指用代理服务器来接受 Internet 上的连接请求,然后将请求转发给内部网络中的上游服务器,并将上游服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器对外的表现就是一个 Web 服务器。

Nginx 具备超强的高并发高负载能力,一般会作为前端的服务器直接向客户端提供静态文件服务;而业务一般还包含一些业务逻辑需要 Apache、Tomcat 等服务器来处理,故通常 Nginx 对外表现即为静态 Web 服务器也是反向代理服务器。

缺点是增加了一次请求的处理时间,优点是降低了上游服务器的负载,尽量将压力放在 Nginx 服务器上。

1、负载均衡配置

upstream,定义一个上游服务器集群

upstream backend {
    # ip_hash;
    server s1.chenya.com;
    server s2.chenya.com;
}
server {
    location / {
        proxy_pass http://backend;
    }
}

2、反向代理

proxy_pass 将请求转发到有处理能力的端上,默认不会转发请求中的 Host 头部

location /blog {
    prox_pass http://localhost:9000;
    ### 下面都是次要关注项
    proxy_set_header Host $host;
    proxy_method POST;
    # 指定不转发的头部字段
    proxy_hide_header Cache-Control;
    proxy_hide_header Other-Header;
    # 指定转发的头部字段
    proxy_pass_header Server-IP;
    proxy_pass_header Server-Name;
    # 是否转发包体
    proxy_pass_request_body on | off;
    # 是否转发头部
    proxy_pass_request_headers on | off;
    # 显形/隐形 URI,上游发生重定向时,Nginx 是否同步更改 uri
    proxy_redirect on | off;
}

一个简单的例子,Node.js

一个十分常见的需求:处理请求,如果是静态文件,Nginx 直接返回,否则交给 Node 服务器处理。首先创建了一个 Node 服务器:

const http = require('http');
http.createServer((req, res) => {
    res.end('hello world');
}).listen(9000);

任何请求过来都返回hello world,简版的 Nginx 配置如下,

events {
    # 这里可不写东西
    use epoll;
}
http {
    server {
        listen 127.0.0.1:8888;
        # 如果请求路径跟文件路径按照如下方式匹配找到了,直接返回
        try_files $uri $uri/index.html;
        location ~* ^/(js|css|image|font)/$ {
            # 静态资源都在 static 文件夹下
            root /home/chenya/www/static/;
        }
        location /app {
            # Node.js 在 9000 开了一个监听端口
            proxy_pass http://127.0.0.1:9000;
        }
        # 上面处理出错或者未找到的,返回对应状态码文件
        error_page    404            /404.html;
        error_page    502  503  504  /50x.html;
    }
}

首先 try_files,尝试直接匹配文件;没找到就匹配静态资源;还没找到就交给 Node 处理;否则就返回 4xx/5xx 的状态码。

测试语法

nginx -t

到此这篇关于Nginx安装配置的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2022-06-22

nginx安装以及配置的详细过程记录

目录 1 nginx 介绍 1 什么是nginx 2 应用场景 2 nginx安装 1 下载 2 安装要求的环境 1.需要安装gcc环境 2.第三方的开发包 3 nginx安装过程 3 启动nginx 4 查看nginx是否启动 5 关闭nginx 6 重启nginx 7 刷新配置文件 8 关闭防火墙,开启远程访问 9 访问nginx 10 配置虚拟主机 11 通过端口区分不同的主机 12 多个域名区分虚拟主机 1 什么是域名 2 nginx配置 3 测试 13 正向代理 14 反向代理 15

Nginx服务器的安装与一些基本配置总结

安装 ubuntu下 sudo apt-get install nginx 启动 sudo /etc/init.d/nginx start #通过init.d下的启动文件启动. sudo service nginx start#通过ubuntu的服务管理器启动 配置文件位置 /etc/nginx/nginx.conf 编译安装 1.先决条件 (1).gcc apt-get install gcc (2).pcre(Perl Compatible Regular Expression) apt-g

Nginx安装及配置详细分析

以下是nginx在各种环境条件下的安装与配置过程,其中还分析了中间遇到的坑以及处理方式,如果你需要往下看. nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现. 这里主要通过三个方面简单介绍nginx 反向代理负载均衡 nginx特点 1. 反向代理 关于代理 说到代理,首先我们要明确一个概念,所谓代理就是一个代表.一个

Nginx 服务器安装及配置文件详解介绍

Nginx 在工作中已经有好几个环境在使用了,每次都是重新去网上找博客,各种编译配置,今天自己也整理一份安装文档和 nginx.conf 配置选项的说明,留作以后参考. 1. 安装nginx 1.1 选择稳定版本 我们编译安装nginx来定制自己的模块,机器CentOS 6.2 x86_64.首先安装缺少的依赖包: # yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-d

Nginx的安装和多域名配置的实现方法

Nginx安装 centos6.x yum默认没有nginx的软件包 安装方式: 到nginx下载页面http://nginx.org/en/linux_packages.html#stable,复制CENTOS 6的nginx软件源安装包 运行命令:wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm 安装rpm包 yum install nginx-rel

Nginx安装后常用功能配置基础篇

前言 为了在使用中更高效简洁,Nginx安装后通常会进行一些常用的配置. 1.主配置文件与虚拟主机分离 如果虚拟主机很多的话,进行分离看起来会更方便,还可以按功能.业务进行划分,下面以两个虚拟主机为例. 完整的除去空行和注释后的配置文件: [root@nginx-01 conf]# egrep -v "#|^$" nginx.conf.bak worker_processes 1; events { worker_connections 1024; } http { include m

Nginx 安装与配置规则入门详解

一.nginx 安装与运行 (Mac OS环境) 1. 安装 nginx 可通过 Homebrew 可直接安装: $brew install nginx 安装好后,默认首页的文件在 /usr/local/var/www 文件夹下 默认的配置文件地址在 /usr/local/etc/nginx/nginx.conf nginx 默认用的 8080 端口,如果发现端口被占用了(通过 $lsof -i:8080查看端口占用情况),可以杀掉使用该端口的进程($kill 进程PID).或者修改 nginx

Nginx服务器安装及配置文件与使用详解

Nginx 在工作中已经有好几个环境在使用了,每次都是重新去网上找博客,各种编译配置,今天自己也整理一份安装文档和 nginx.conf 配置选项的说明,留作以后参考. 1. 安装nginx 1.1 选择稳定版本 我们编译安装nginx来定制自己的模块,机器CentOS 6.2 x86_64.首先安装缺少的依赖包: 复制代码 代码如下: # yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel

Nginx简要安装配置方法图文教程

直入主题: 1.nginx安装所需文件 1).nginx-1.2.8.tar.gz 2).openssl-1.0.1g.tar.gz 3).pcre-8.31.tar.gz 4).zlib-1.2.7.tar.gz 上述安装包的下载地址正常可用,由于本人用的是上述版本的安装包,所以下述安装均以此作为基础. 2.Linux机器的配置环境 2.1.java环境 $java -version java version "1.8.0_45" Java(TM) SE Runtime Enviro

在Nginx服务器上安装配置博客程序Typecho的教程

typecho比wordpress更轻,更专注于写的享受. 现在大多的虚拟机运行环境都是lnmp,安装教程安装typecho可能会遇到404,数据配置错误问题. 把这两天安装typecho的步骤写下来给大家参考. typecho安装方法 1.下载 #网站目录 cd /usr/local/nginx/html/ wget https://github.com/typecho/typecho/releases/download/v0.9-13.12.12-release/0.9.13.12.12.-

在Ubuntu系统上安装Ghost博客平台的教程

今天我们将会在Ubuntu Server 14.04 LTS (Trusty)上安装一个博客平台Ghost. Ghost是一款设计优美的发布平台,很容易使用且对任何人都免费.它是免费的开源软件(FOSS),它的源码在Github上.截至2015年1月(LCTT 译注:原文为2014,应为2015),它的界面很简单还有分析面v板.编辑使用的是很便利的分屏显示. 因此有了这篇步骤明确的在Ubuntu Server上安装Ghost的教程: 1. 升级Ubuntu 第一步是运行Ubuntu软件升级并安装

LNMP系列教程之 SSL安装WordPress博客(程序下载与安装)

在之前的文章中,老左已经在VPS中添加了站点,然后我们就需要传程序建站.我们可以利用WinSCP工具直接向我们的对应的站点目录中传程序,然后添加数据库安装网站.但是今天我分享的这个方法是比较先进的SSL远程下载程序,这样的好处是万一我们用的CMS程序较大,可以直接下载至VPS中,省的我们再去FTP传.用命令操作一来可以显得牛X,二来可以节省时间. 首先,用Putty登陆我们的VPS,到我们的站点目录下,今天我以安装wordpress建立博客为例: 其次,输入远程下载程序的命令: wget htt

Nginx服务器上安装并配置PHPMyAdmin的教程

一. 准备工作: 1. 如果mysql的root账号为空,需要设置root密码 CentOS下默认安装的mysql服务器,里面的root账号默认密码为空,首先为root设置一个密码 #mysqladmin -u root password yourpassword *注: 虽然通过一些特殊配置,可以使phpmyadmin允许空密码登录,但是不推荐这样做,尤其是公网的服务器. 2. 设置php.ini正确配置session.save_path 1). 首先检查php.ini配置文件 #grep s

Linux下Tomcat+Nginx服务器环境安装配置的简明教程

一.安装 1.安装JDK 下载的jdk文件为:jdk-6u45-linux-x64.bin,执行如下命令进行安装: #./jdk-6u12-linux-i586.bin 2.安装tomcat: #tar zxvf apache-tomcat-6.0.18.tar.gz #mv apache-tomcat-6.0.29 tomcat 这里我将解压后的apache-tomcat-6.0.29重命名为了tomcat方便操作. 3.配置环境变量: 编辑/etc下的profile文件,加上如下内容: JA

Linux服务器下安装配置Nginx的教程

Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. 在高连接并发的情况下,Nginx是Apache服务器不错的替代品. Nginx 安装 一.安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 二.首先要安装 PCRE PCRE 作用是让 N

在linux服务器上安装Jenkins

Jenkins是用java编写的开源持续集成工具,目前被国内外各公司广泛使用.本章教大家如何在linux服务器上安装Jenkins. 一.获得一台linux服务器 要在linux下安装git,首先你得先有一台linux服务器,作为小白,手头的机器肯定都是windows的,搞个虚拟机安装对我这种小白简直是折磨人:这里使用最简单的方式获得一台linux服务器,就是从阿里云上租一台.镜像选择CentOS7.3 64位. 二.安装jdk Jenkins的运行需要依赖jdk,所以在安装Jenkins之前我

Linxu服务器上安装JDK 详细步骤

一.环境 VMware12 Pro CentOS-6.7-i386-bin-DVD1 jdk-8u151-linux-i586 二.详细安装步骤 前提:需要卸载自己Linux上的jdk rpm-qa| grepjdk 会显示你所有包含jdk这个字符串的安装包 rpm-e--nodeps对应的每个包名 会卸载对应的包 之后如果java -version显示 就是卸完了. 我之前是装过jdk1.7的,所以我需要卸载 ,没装过的直接从下面开始 1.去官网下载JDK http://www.oracle.

在服务器上安装python3.8.2环境的教程详解

在服务器上安装python3.8.2环境 官网3.8.2下载地址 https://www.python.org/downloads/release/python-382/ 下载安装 下载好了之后上传到服务器上 或者在服务器上通过命令下载 wget https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz 执行安装 解压文件 tar -xvzf Python-3.8.2.tgz 进入文件的目录 cd Python-3.8.2 添加配置文件 配

注意: 您的主控服务器上安装IE7,会造成新网互联的接口不正常

就表明您的服务器上安装了IE7,就造成了新网互联的接口不正常. ----------------------------------------------------------------------------------------------------------------- 原因:由于微软IE7的最新安全补丁,修改了ASP调用.NET的安全设置,导致 所程序都无法调用.NET组件,新网互联使用的是.NET组件.这就会造 成新网互联的域名接口无法使用.因此,当您如果您在查询域名的