资讯专栏INFORMATION COLUMN

【运维】nginx服务器基本配置指南

luxixing / 1513人阅读

摘要:前言是一个高性能的和反向代理服务器,也是一个服务器安装安装源码安装安装以为例设置源设置代理公网情况下可忽略代理命令安装源码安装下载源码模块扩展安装在安装的时候往往会有配置需求同时如果我们想要安装一个第三方的模块则需要进行设

前言
Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器
安装

yum安装

源码安装

yum安装

以CentOS6.5 为例

设置yum源, vi etc/yum.repos.d/nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/6/x86_64/
gpgcheck=0
enabled=1

设置代理 vi /etc/yum.conf (公网情况下可忽略)

proxy=代理IP

命令安装

sudo yum install nginx

源码安装

下载nginx源码

wget http://nginx.org/download/nginx-1.13.12.tar.gz

tar -xvzf nginx-1.13.12.tar.gz

cd nginx-1.13.12

./configure --prefix=/usr/local/nginx

make

sudo make install
模块扩展安装

在安装nginx的时候, 往往会有配置需求, 同时如果我们想要安装一个第三方的模块, 则需要 --add-module 进行设置. 例如下面要求

已知第三方模块

nginx-http-concat 前端JS,CSS文件合并资源

git clone https://github.com/alibaba/nginx-http-concat.git

# nginx 编译  
./configure --add-module=/path/to/nginx-http-concat

make 

sudo make install
源码重新编译

有时候, 我们需要给现有的nginx加入一些扩展模块. 那么就需要通过对应的版本的源代码, 重新configure, 具体步骤如下:

# 老的nginx 执行 nginx -V
/usr/local/nginx/sbin/nginx -V

# nginx 同一版本下的源码 执行 configure, 附加新的模块
./configure --prefix=/usr/local/nginx --add-module=/path/to/nginx-http-concat

# 编译
make

# 备份老的nginx
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

# 将objs目录下产生新的 nginx 覆盖老的nginx
cp objs/nginx /usr/local/nginx/sbin/nginx

# 如果出现文件打开错误,运行下面这句
mkdir -p /dev/shm/nginx_temp/client_body

# 测试
sudo /usr/local/nginx/sbin/nginx -t

# 平滑重启nginx
sudo /usr/local/nginx/sbin/nginx -s reload
nginx配置 基本配置
user www www; # 用户名 用户组

http {
    # http服务设置
      
    # 引入多个mime类型
    include mime.types;
    
    # 启用gzip压缩
    gzip on;
    
    # 错误页面重定向
    error_page  400 401 402 403 404 405 408 410 412 413 414 415 500 501 502 503 506 = /error.html;
    
    # 引入额外配置
    include vhosts/*.conf;
}
虚拟主机配置

用户请求 host为 liylblog.com 主机时, 将访问 root 目录下的资源

server {
    listen       80;
    server_name  liylblog.com;
    root         /home/www/liyblog/html;
}
路由匹配设置
server {
    listen       80;
    server_name  liylblog.com;
    root         /home/www/liyblog/html;
    
    # 最长优先匹配, 所以 / 为最后匹配规则
    location / {
        # 设置默认的index文件名称
        index index.html index.html;
        try_files $uri $uri/;
    }
    
    # 以.php结尾或者 .php/xxx 结尾的路径, ~ 表示大小写敏感
    location ~ .php($|/) {
        # 规则
    }
    
    # 大小写敏感, 以 /img/ 开头的资源路径将被匹配
    # /img/logo.png
    # /img/avatar.png
    location ^~ /img/ {
        # 规则
    }
    
    # 大小写敏感, 匹配 /api 资源
    location ^~ = /api {
        f( !-e $request_filename )
        {
            rewrite ^/api /api/ last;
        }
    }
}

nginx 配置负载均衡

server {
    listen       80;
    server_name  liylblog.com;

    location / {
        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_pass http://proxy_stream;
    }
}

# 多台机器代理, 背后可能是其它web服务器
upstream proxy_stream {
    server 192.168.1.1 max_fails=3 fail_timeout=30s;
    server 192.168.1.2 max_fails=3 fail_timeout=30s;
}
反向代理 PHP-FPM代理
server {
    listen       80;
    server_name  liylblog.com;
    root         /home/www/liyblog/html;
    access_log /usr/local/nginx/logs/liylblog.access.log;
    error_log  /usr/local/nginx/logs/liylblog.error.log;

    location / {
        index  index.html index.htm index.php;
        if (!-e $request_filename) { ## if 后面必须有空格
            rewrite ^(.*)$ /index.php?s=$1 last;
            break;
        }
    }
    # 大小写敏感, 匹配.php后缀结尾或者 .php/ 结尾的路径
    location ~ .php($|/) {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_script_name;
        fastcgi_split_path_info ^(.+?.php)(/.*)$;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        client_max_body_size 100M;
        fastcgi_connect_timeout 300s;
        fastcgi_send_timeout 300s;
        fastcgi_read_timeout 300s;
        include fastcgi_params;
     }

}
Node.js 代理
server {
    listen       80;
    server_name  liylblog.com;
    root         /home/www/liyblog/html;
    access_log /usr/local/nginx/logs/liylblog.access.log;
    error_log  /usr/local/nginx/logs/liylblog.error.log;

    location @proxy {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://localhost:7001;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_cache_key sfs$request_uri$scheme;
    }   

    location / { 
        autoindex on; 
        index  index.html index.htm;
        # 尝试访问地址 例如, 访问 $root/foo, $root/foo/index.html, $root/foo/index.htm, $proxy/foo; 
        try_files $uri $uri/ @proxy;
    }   
}
小结

nginx 是一个优秀的代理服务器, 还有很多未知的知识亟待去挖掘

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39891.html

相关文章

  • 运维nginx务器基本配置指南

    摘要:前言是一个高性能的和反向代理服务器,也是一个服务器安装安装源码安装安装以为例设置源设置代理公网情况下可忽略代理命令安装源码安装下载源码模块扩展安装在安装的时候往往会有配置需求同时如果我们想要安装一个第三方的模块则需要进行设 前言 Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器 安装 yum安装 源码安装 yum安...

    SexySix 评论0 收藏0
  • linux

    摘要:包括转义字符引号的使用等等。使用隐写术的指纹文件隐写术是将消息隐藏到不被认为会出现的地方的做法。在很好地执行了隐写术的片段中,任何不是预期接收者的人都能看到消息,但是却完全无法意识到消息就在那儿。 CentOS 7 时区、日期时间查看以及设置杂烩 CentOS 7 中时区、日期时间的查看、设置。包括网络时间协议 NTP 的安装和同步,Timedatectl 命令查看当前的时区、日期日期...

    lijinke666 评论0 收藏0
  • Nginx

    摘要:此外,其也能够提供强大的反向代理功能。是由为俄罗斯访问量第二的站点开发的,第一个公开版本发布于年月日。 keepalived+nginx 实现高可用双机热备 + 负载均衡架构 1 准备4个ubuntu16.04虚拟机(启用网卡二并使用桥接模式):A服务器:192.168.0.103 主B服务器:192.168.0.104 主(备) 前端工程师学习 Nginx ...

    syoya 评论0 收藏0
  • Nginx

    摘要:此外,其也能够提供强大的反向代理功能。是由为俄罗斯访问量第二的站点开发的,第一个公开版本发布于年月日。 keepalived+nginx 实现高可用双机热备 + 负载均衡架构 1 准备4个ubuntu16.04虚拟机(启用网卡二并使用桥接模式):A服务器:192.168.0.103 主B服务器:192.168.0.104 主(备) 前端工程师学习 Nginx ...

    Imfan 评论0 收藏0
  • Docker Swarm在生产环境中的进阶指南

    摘要:应该如何解决本文将给出若干提示,如何在生产环境中使用。路由匹配服务发现负载均衡跨容器通讯非常可靠。在单个端口上运行一个服务,节点的任意主机都可以访问,负载均衡完全在后台实现。 上周数人云给大家分享了——《你可能需要的关于Docker Swarm的经验分享》今天给大家带来这位作者大大的后续文章——《Docker Swarm在生产环境中的进阶指南》 当在本地开发环境中使用Docker,或者...

    galaxy_robot 评论0 收藏0

发表评论

0条评论

luxixing

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<