澳门新浦京娱乐场网站-www.146.net-新浦京娱乐场官网
做最好的网站

澳门新浦京娱乐场网站nginx服务器安装及配置文件

前面的话

  如果服务器只需要放置一个网站程序,解析网站到服务器的网站,网站程序监听80端口就可以了。如果服务器有很多应用,借助nginx不仅可以实现端口的代理,还可以实现负载均衡。本文将详细介绍前端及nodeJS项目在服务器配置时需要用到的nginx配置

 

先确定安装了nginx, 通过nginx -v查看版本

今天来做一下 nginx 的分享

nginx在工作中已经有好几个环境在使用了,每次都是重新去网上扒博客,各种编译配置,今天自己也整理一份安装文档和nginx.conf配置选项的说明,留作以后参考。像负载均衡配置(包括健康检查)、缓存(包括清空缓存)配置实例,请参考 ,ssl加密请参考  。

安装

【卸载nginx】

  在介绍如何安装nginx之前,先要介绍如何卸载nginx。因为nginx不正确的安装,导致无法正常运行,所以需要卸载nginx

sudo apt-get remove nginx nginx-common # 卸载删除除了配置文件以外的所有文件
sudo apt-get purge nginx nginx-common # 卸载所有东东,包括删除配置文件
sudo apt-get autoremove # 在上面命令结束后执行,主要是卸载删除Nginx的不再被使用的依赖包
sudo apt-get remove nginx-full nginx-common #卸载删除两个主要的包

【安装nginx】

  首先,更新包列表

sudo apt-get update

  然后,一定要在sudo下安装nginx

sudo apt-get install nginx

澳门新浦京娱乐场网站 1

 

一、目标

要实现的效果是:一个服务器下有两个网站(个人博客和博客后台管理系统)和一个nodejs服务(就是后台——提供接口服务)

首先是编译需要的一些东西

1. 安装nginx

主机配置

【端口配置】

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.xiaohuochai.com xiaohuochai.com
server_name *.xiaohuochai.com
server_name ~^.xiaohuochai.com$

 

二、知识点

gcc-c

1.1 选择稳定版本

我们编译安装nginx来定制自己的模块,机器CentOS 6.2 x86_64。首先安装缺少的依赖包:

1
# yum -y install gcc gcc-c   make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel

 

这些软件包如果yum上没有的话可以下载源码来编译安装,只是要注意编译时默认安装的目录,确保下面在安装nginx时能够找到这些动态库文件(ldconfig)。

从  下载稳定版nginx-1.6.3.tar.gz/usr/local/src下解压。

为了后续准备我们另外下载2个插件模块:nginx_upstream_check_module-0.3.0.tar.gz —— 检查后端服务器的状态,nginx-goodies-nginx-sticky-module-ng-bd312d586752.tar.gz(建议在/usr/local/src下解压后将目录重命名为nginx-sticky-module-ng-1.2.5) —— 后端做负载均衡解决session sticky问题(与upstream_check模块结合使用需要另外打补丁,请参考nginx负载均衡配置实战)。

请注意插件与nginx的版本兼容问题,一般插件越新越好,nginx不用追新,稳定第一。nginx-1.4.7,nginx-sticky-module-1.1,nginx_upstream_check_module-0.2.0,这个搭配也没问题。sticky-1.1与nginx-1.6版本由于更新没跟上编译出错。(可以直接使用Tengine,默认就包括了这些模块)

1
2
3
4
5
6
7
8
[root@cachets nginx-1.6.3]# pwd
/usr/local/src/nginx-1.6.3
[root@cachets nginx-1.6.3]# ./configure --prefix=/usr/local/nginx-1.6 --with-pcre 
> --with-http_stub_status_module --with-http_ssl_module 
> --with-http_gzip_static_module --with-http_realip_module 
> --add-module=../nginx_upstream_check_module-0.3.0

[root@cachets nginx-1.6.3]# make && make install

路径配置

【location】

  nginx使用location指令来实现URI匹配

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

【根目录设置】

location / {
    root /home/test/;
}

【别名设置】

location /blog {
    alias /home/www/blog/;
}
location ~ ^/blog/(d )/([w-] )$ {
    # /blog/20180402/article-name  
    # -> /blog/20180402-article-name.md
    alias /home/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;
}

 

2.1 反向代理

反向代理:普通的代理设备是内网用户通过代理设备出外网进行访问(如:vpn),而工作在这种模式下的负载均衡设备,则是外网用户通过代理设备访问内网(用户通过浏览器上网),因此称之为反向代理。

libtool

1.2 常用编译选项说明

nginx大部分常用模块,编译时./configure --help--without开头的都默认安装。

  • --prefix=PATH : 指定nginx的安装目录。默认 /usr/local/nginx
  • --conf-path=PATH : 设置nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/nginx.conf
  • --user=name: 设置nginx工作进程的用户。安装完成后,可以随时在nginx.conf配置文件更改user指令。默认的用户名是nobody。--group=name类似
  • --with-pcre : 设置PCRE库的源码路径,如果已通过yum方式安装,使用--with-pcre自动找到库文件。使用--with-pcre=PATH时,需要从PCRE网站下载pcre库的源码(版本4.4 - 8.30)并解压,剩下的就交给Nginx的./configuremake来完成。perl正则表达式使用在location指令和 ngx_http_rewrite_module模块中。
  • --with-zlib=PATH : 指定 zlib(版本1.1.3 - 1.2.5)的源码解压目录。在默认就启用的网络传输压缩模块ngx_http_gzip_module时需要使用zlib 。
  • --with-http_ssl_module : 使用https协议模块。默认情况下,该模块没有被构建。前提是openssl与openssl-devel已安装
  • --with-http_stub_status_module : 用来监控 Nginx 的当前状态
  • --with-http_realip_module : 通过这个模块允许我们改变客户端请求头中客户端IP地址值(例如X-Real-IP 或 X-Forwarded-For),意义在于能够使得后台服务器记录原始客户端的IP地址
  • --add-module=PATH : 添加第三方外部模块,如nginx-sticky-module-ng或缓存模块。每次添加新的模块都要重新编译(Tengine可以在新加入module时无需重新编译)

再提供一种编译方案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
./configure 
> --prefix=/usr 
> --sbin-path=/usr/sbin/nginx 
> --conf-path=/etc/nginx/nginx.conf 
> --error-log-path=/var/log/nginx/error.log 
> --http-log-path=/var/log/nginx/access.log 
> --pid-path=/var/run/nginx/nginx.pid  
> --lock-path=/var/lock/nginx.lock    
> --user=nginx 
> --group=nginx 
> --with-http_ssl_module 
> --with-http_stub_status_module 
> --with-http_gzip_static_module 
> --http-client-body-temp-path=/var/tmp/nginx/client/ 
> --http-proxy-temp-path=/var/tmp/nginx/proxy/ 
> --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ 
> --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi 
> --with-pcre=../pcre-7.8
> --with-zlib=../zlib-1.2.3

 

反向代理

  代理分为正向和反向代理,正向代理代理的对象是客户端,反向代理代理的对象是服务端

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

【负载均衡设置】

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

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

【反向代理设置】

  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;
}

 

三、思路

gzip 模块需要 zlib 库

1.3 启动关闭nginx

1
2
3
4
5
6
7
8
9
10
11
12
## 检查配置文件是否正确
# /usr/local/nginx-1.6/sbin/nginx -t 
# ./sbin/nginx -V     # 可以看到编译选项

## 启动、关闭
# ./sbin/nginx        # 默认配置文件 conf/nginx.conf,-c 指定
# ./sbin/nginx -s stop
或 pkill nginx

## 重启,不会改变启动时指定的配置文件
# ./sbin/nginx -s reload
或 kill -HUP `cat /usr/local/nginx-1.6/logs/nginx.pid`

当然也可以将 nginx 作为系统服务管理,下载 nginx 到/etc/init.d/,修改里面的路径然后赋予可执行权限。

1
# service nginx {start|stop|status|restart|reload|configtest}

 

HTTPS配置

server{
        listen 80;
        server_name api.xiaohuochai.cc;
        return 301 https://api.xiaohuochai.cc$request_uri;
}
server{
        listen 443;
        server_name api.xiaohuochai.cc;
        ssl on;
        ssl_certificate /home/www/blog/crt/api.xiaohuochai.cc.crt;
        ssl_certificate_key /home/www/blog/crt/api.xiaohuochai.cc.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        if ($ssl_protocol = "") {
                rewrite ^(.*)https://$host$1 permanent;
        }

}  

 【HTTP2】

  开启HTTP2服务非常简单,只需要在端口443后面添加http2即可

server{
        listen 443 http2;
...
}

 

3.1 网站的访问

两个网站其实都是静态资源,它们是存放在服务器上,然后通过相应的地址可以访问到

主要的问题在于: 我们通过地址怎么可以访问到服务器上的文件夹。

两种实现思路

  1. 使用nginx作为反向代理服务器来处理从浏览器接收到的请求(nginx处理静态资源)
  2. 使用nodejs来响应从浏览器接收到的请求(nodejs处理静态资源)

nginx简单点理解:它是一个web服务器,凡是通过域名或ip地址访问服务器,先要经过nginx进行处理,然后由它来转发请求到各个不同的端口或其他服务器上。基于这个特性,它可以作为反向代理、负载均衡器以及Http缓存(这里没有涉及缓存),nginx是完全由配置文件控制,也就是可以直接通过配置文件来操作它

rewrite 模块需要 pcre 库

1.4 yum安装

—- 2015-05-22更新
yum安装rpm包会比编译安装简单很多,默认会安装许多模块,但缺点是如果你想以后安装第三方模块那就没办法了。

1
2
3
4
5
6
# vi /etc/yum.repo.d/nginx.repo 
[nginx] 
name=nginx repo 
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ 
gpgcheck=0 
enabled=1

 

剩下的就yum install nginx搞定,也可以yum install nginx-1.6.3安装指定版本(前提是你去packages里看到有对应的版本,默认是最新版稳定版)。

gzip配置

  开启网站的 gzip 压缩功能,通常可以高达70%,也就是说,如果网页有30K,压缩之后就变成9K, 对于大部分网站,显然可以明显提高浏览速度

澳门新浦京娱乐场网站 2

  gzip配置在nginx.conf文件中已经存在,只不过默认是注释的状态,只需将注释符号去掉即可

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml rss text/javascript;

 

3.1.1 思路一:nginx作为反向代理服务器处理静态资源

分为两步:

  1. 准备好对应的资源
  2. 配置nginx

ssl 功能需要 openssl 库

2. nginx.conf配置文件

Nginx配置文件主要分成四部分:main(全局设置)、server(主机设置)、upstream(上游服务器设置,主要为反向代理、负载均衡相关配置)和 location(URL匹配特定位置后的设置),每部分包含若干个指令。main部分设置的指令将影响其它所有部分的设置;server部分的指令主要用于指定虚拟主机域名、IP和端口;upstream的指令用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡;location部分用于匹配网页位置(比如,根目录“/”,“/images”,等等)。他们之间的关系式:server继承main,location继承server;upstream既不会继承指令也不会被继承。它有自己的特殊指令,不需要在其他地方的应用。

当前nginx支持的几个指令上下文:

缓存配置

澳门新浦京娱乐场网站 3

  如果服务器中存在静态资源,可设置本地强缓存。expires 7d表示在本地缓存7天

location / {
    expires 7d;
    ...  
}

  设置完成后,浏览器会自动添加expires和cache-control字段

  而对于协商缓存Etag和Last-Modified,nginx默认开启,无需配置

 

第一步:准备好资源

在服务器的/www/blog/目录下创建index.html文件,里面就是普通的html内容

安装依赖

2.1 通用

下面的nginx.conf简单的实现nginx在前端做反向代理服务器的例子,处理js、png等静态文件,jsp等动态请求转发到其它服务器tomcat:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
user  www www;
worker_processes  2;

error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        logs/nginx.pid;


events {
    use epoll;
    worker_connections  2048;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #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  logs/access.log  main;

    sendfile        on;
    # tcp_nopush     on;

    keepalive_timeout  65;

  # gzip压缩功能设置
    gzip on;
    gzip_min_length 1k;
    gzip_buffers    4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 6;
    gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
    gzip_vary on;

  # http_proxy 设置
    client_max_body_size   10m;
    client_body_buffer_size   128k;
    proxy_connect_timeout   75;
    proxy_send_timeout   75;
    proxy_read_timeout   75;
    proxy_buffer_size   4k;
    proxy_buffers   4 32k;
    proxy_busy_buffers_size   64k;
    proxy_temp_file_write_size  64k;
    proxy_temp_path   /usr/local/nginx/proxy_temp 1 2;

  # 设定负载均衡后台服务器列表 
    upstream  backend  { 
              #ip_hash; 
              server   192.168.10.100:8080 max_fails=2 fail_timeout=30s ;  
              server   192.168.10.101:8080 max_fails=2 fail_timeout=30s ;  
    }

  # 很重要的虚拟主机配置
    server {
        listen       80;
        server_name  itoatest.example.com;
        root   /apps/oaapp;

        charset utf-8;
        access_log  logs/host.access.log  main;

        #对 / 所有做负载均衡 反向代理
        location / {
            root   /apps/oaapp;
            index  index.jsp index.html index.htm;

            proxy_pass        http://backend;  
            proxy_redirect off;
            # 后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
            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_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;

        }

        #静态文件,nginx自己处理,不去backend请求tomcat
        location  ~* /download/ {  
            root /apps/oa/fs;  

        }
        location ~ .*.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$   
        {   
            root /apps/oaapp;   
            expires      7d; 
        }
         location /nginx_status {
            stub_status on;
            access_log off;
            allow 192.168.10.0/24;
            deny all;
        }

        location ~ ^/(WEB-INF)/ {   
            deny all;   
        }
        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

  ## 其它虚拟主机,server 指令开始
}

 

CSP配置

  跨域脚本攻击 XSS 是最常见、危害最大的网页安全漏洞。为了防止它们,要采取很多编程措施,非常麻烦。很多人提出,能不能根本上解决问题,浏览器自动禁止外部注入恶意脚本?这就是"网页安全政策"(Content Security Policy,缩写 CSP)的来历

  CSP 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提供配置

  目前,CSP有如下指令

指令    指令值示例    说明
default-src    'self' cnd.a.com    定义针对所有类型(js、image、css、web font,ajax 请求,iframe,多媒体等)资源的默认加载策略,某类型资源如果没有单独定义策略,就使用默认的。
script-src    'self' js.a.com    定义针对 JavaScript 的加载策略。
style-src    'self' css.a.com    定义针对样式的加载策略。
img-src    'self' img.a.com    定义针对图片的加载策略。
connect-src    'self'    针对 Ajax、WebSocket 等请求的加载策略。不允许的情况下,浏览器会模拟一个状态为 400 的响应。
font-src    font.a.com    针对 WebFont 的加载策略。
object-src    'self'    针对 <object>、<embed> 或 <applet> 等标签引入的 flash 等插件的加载策略。
media-src    media.a.com    针对 <audio> 或 <video> 等标签引入的 HTML 多媒体的加载策略。
frame-src    'self'    针对 frame 的加载策略。
sandbox    allow-forms    对请求的资源启用 sandbox(类似于 iframe 的 sandbox 属性)。
report-uri    /report-uri    告诉浏览器如果请求的资源不被策略允许时,往哪个地址提交日志信息。 特别的:如果想让浏览器只汇报日志,不阻止任何内容,可以改用 Content-Security-Policy-Report-Only 头。

  指令值可以由下面这些内容组成:

指令值    指令示例    说明
img-src    允许任何内容。
'none'    img-src 'none'    不允许任何内容。
'self'    img-src 'self'    允许来自相同来源的内容(相同的协议、域名和端口)。
data:    img-src data:    允许 data: 协议(如 base64 编码的图片)。
www.a.com    img-src img.a.com    允许加载指定域名的资源。
.a.com    img-src .a.com    允许加载 a.com 任何子域的资源。
https://img.com    img-src https://img.com    允许加载 img.com 的 https 资源(协议需匹配)。
https:    img-src https:    允许加载 https 资源。
'unsafe-inline'    script-src 'unsafe-inline'    允许加载 inline 资源(例如常见的 style 属性,onclick,inline js 和 inline css 等等)。
'unsafe-eval'    script-src 'unsafe-eval'    允许加载动态 js 代码,例如 eval()。

  admin.xiaohuochai.cc中的CSP配置如下

add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data: https://pic.xiaohuochai.site https://static.xiaohuochai.site; style-src 'self' 'unsafe-inline'; frame-src https://demo.xiaohuochai.site https://xiaohuochai.site;";

 

第二步:配置nginx

打开/etc/nginx/conf.d/文件夹,创建配置文件smallmage.conf,内容如下:

server {
    listen 80;  // 表示http协议的端口
    server_name smallmage.com;  // 域名地址
    location / {  // 定位
            root   /www/blog;  // 根目录
            index  index.php index.html index.htm;  // index定义的是首页
        }
}

上面的配置文件意思是:当访问http://smallmage.com这个域名地址时(http协议的默认端口是80),就到服务器的/www/blog路径下去取文件,默认首页是:index.php、index.html、index.htm,假如/www/blog文件夹下有index.phpindex.html文件,则优先返回index.php文件,也就是有优先级的。如果没有开启目录浏览权限,又找不到这些默认首页,就会报403错误。

nginx怎么找到/etc/nginx/conf.d/smallmage.conf这个文件呢?
该文件是在/etc/nginx/nginx.conf中会被引入,如果不确定nginx的配置文件路径,可以通过sudo nginx -t来查看nginx的状态,从里面可以获取到nginx的配置文件路径,如下所示:

澳门新浦京娱乐场网站 4

nginx -t命令

nginx.conf里面可以查找到引入的所有配置nginx的配置文件信息,如下:

澳门新浦京娱乐场网站 5

nginx.conf配置文件

注意

  • 要想通过smallmage.com来访问服务器,需要将smallmage.com这个域名解析到我们的服务器ip地址上,才可以通过smallmage.com来访问
  • 更改了nginx相关的配置后,需要重启nginx,nginx命令如下:
    sudo nginx -t: 查看nginx状态
    sudo nginx -s reload:重启服务器

上面便设置了nginx作为反向代理服务器处理静态资源

直接用 yum 安装就行了,不用自己编译,节省很多时间

2.2 常用指令说明

隐藏信息

  在请求响应头中,有这么一行 server: nginx,说明用的是 Nginx 服务器,但并没有具体的版本号。由于某些 Nginx 漏洞只存在于特定的版本,隐藏版本号可以提高安全性。这只需要在配置里加上这个就可以了:

server_tokens   off;

 

3.1.2 思路二:使用nodejs来处理静态资源

其实就是在服务器上启动一个nodejs服务,然后通过ip地址 端口来访问资源,由node来响应请求,不需要配置nginx;

分为两步:

  • 编写使用nodejs接口的js文件
  • 使用node来启动该文件

下面依赖,根据实际情况自己安装需要的

2.2.1 main全局配置

nginx在运行时与具体业务功能(比如http服务或者email服务代理)无关的一些参数,比如工作进程数,运行的身份等。

  • woker_processes 2
    在配置文件的顶级main部分,worker角色的工作进程的个数,master进程是接收并分配请求给worker处理。这个数值简单一点可以设置为cpu的核数grep ^processor /proc/cpuinfo | wc -l,也是 auto 值,如果开启了ssl和gzip更应该设置成与逻辑CPU数量一样甚至为2倍,可以减少I/O操作。如果nginx服务器还有其它服务,可以考虑适当减少。

  • worker_cpu_affinity
    也是写在main部分。在高并发情况下,通过设置cpu粘性来降低由于多CPU核切换造成的寄存器等现场重建带来的性能损耗。如worker_cpu_affinity 0001 0010 0100 1000; (四核)。

  • worker_connections 2048
    写在events部分。每一个worker进程能并发处理(发起)的最大连接数(包含与客户端或后端被代理服务器间等所有连接数)。nginx作为反向代理服务器,计算公式 最大连接数 = worker_processes * worker_connections/4,所以这里客户端最大连接数是1024,这个可以增到到8192都没关系,看情况而定,但不能超过后面的worker_rlimit_nofile。当nginx作为http服务器时,计算公式里面是除以2。

  • worker_rlimit_nofile 10240
    写在main部分。默认是没有设置,可以限制为操作系统最大的限制65535。

  • use epoll
    写在events部分。在Linux操作系统下,nginx默认使用epoll事件模型,得益于此,nginx在Linux操作系统下效率相当高。同时Nginx在OpenBSD或FreeBSD操作系统上采用类似于epoll的高效事件模型kqueue。在操作系统不支持这些高效模型时才使用select。

配置流程

  下面在/etc/nginx/conf.d下新建一个配置文件,命名为test-8081.conf,内容如下

  注意:一般以域名-端口号来命名配置文件

upstream xiaohuochai {
        server 127.0.0.1:8081;
}
server{
        listen 80;
        server_name 1.2.3.4;
        location / {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header X-Nginx-Proxy true;
                proxy_pass http://test;
                proxy_redirect off;

        }

}

  下面使用sudo nginx -t来测试配置文件是否格式正确

澳门新浦京娱乐场网站 6

  如果不想让报文显示server的详细信息,需要将/etc/nginx/nginx.conf主配置文件中的server_tockens off前面的注释取消即可

澳门新浦京娱乐场网站 7

  接着,重启nginx服务

sudo nginx -s reload

澳门新浦京娱乐场网站 8

 

第一步:编写使用nodejs接口的js文件

/www/test/目录下创建test.js文件,内容如下;

const http = require('http')
http.createServer(function(req,res) {
res.writeHead(200,{'Content-Type':'text/plain'})
res.end('hello world')
}).listen(8082)  // 监听8082端口

console.log('server test')
yum -y install gcc gcc-c   make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel

2.2.2 http服务器

与提供http服务相关的一些配置参数。例如:是否使用keepalive啊,是否使用gzip进行压缩等。

  • sendfile on
    开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,减少用户空间到内核空间的上下文切换。对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。

  • keepalive_timeout 65 : 长连接超时时间,单位是秒,这个参数很敏感,涉及浏览器的种类、后端服务器的超时设置、操作系统的设置,可以另外起一片文章了。长连接请求大量小文件的时候,可以减少重建连接的开销,但假如有大文件上传,65s内没上传完成会导致失败。如果设置时间过长,用户又多,长时间保持连接会占用大量资源。

  • send_timeout : 用于指定响应客户端的超时时间。这个超时仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接。

  • client_max_body_size 10m
    允许客户端请求的最大单文件字节数。如果有上传较大文件,请设置它的限制值

  • client_body_buffer_size 128k
    缓冲区代理缓冲用户端请求的最大字节数

模块http_proxy:
这个模块实现的是nginx作为反向代理服务器的功能,包括缓存功能(另见文章)

  • proxy_connect_timeout 60
    nginx跟后端服务器连接超时时间(代理连接超时)
  • proxy_read_timeout 60
    连接成功后,与后端服务器两个成功的响应操作之间超时时间(代理接收超时)

  • proxy_buffer_size 4k
    设置代理服务器(nginx)从后端realserver读取并保存用户信息的缓冲区大小,默认与proxy_buffers大小相同,其实可以将这个指令值设的小一点

  • proxy_buffers 4 32k
    proxy_buffers缓冲区,nginx针对单个连接缓存来自后端realserver的响应,网页平均在32k以下的话,这样设置

  • proxy_busy_buffers_size 64k
    高负荷下缓冲大小(proxy_buffers*2)

  • proxy_max_temp_file_size
    当 proxy_buffers 放不下后端服务器的响应内容时,会将一部分保存到硬盘的临时文件中,这个值用来设置最大临时文件大小,默认1024M,它与 proxy_cache 没有关系。大于这个值,将从upstream服务器传回。设置为0禁用。

  • proxy_temp_file_write_size 64k
    当缓存被代理的服务器响应到临时文件时,这个选项限制每次写临时文件的大小。proxy_temp_path(可以在编译的时候)指定写到哪那个目录。

proxy_pass,proxy_redirect见 location 部分。

模块http_gzip:

  • gzip on : 开启gzip压缩输出,减少网络传输。
    • gzip_min_length 1k : 设置允许压缩的页面最小字节数,页面字节数从header头得content-length中进行获取。默认值是20。建议设置成大于1k的字节数,小于1k可能会越压越大。
    • gzip_buffers 4 16k : 设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。4 16k代表以16k为单位,安装原始数据大小以16k为单位的4倍申请内存。
    • gzip_http_version 1.0 : 用于识别 http 协议的版本,早期的浏览器不支持 Gzip 压缩,用户就会看到乱码,所以为了支持前期版本加上了这个选项,如果你用了 Nginx 的反向代理并期望也启用 Gzip 压缩的话,由于末端通信是 http/1.0,故请设置为 1.0。
    • gzip_comp_level 6 : gzip压缩比,1压缩比最小处理速度最快,9压缩比最大但处理速度最慢(传输快但比较消耗cpu)
    • gzip_types :匹配mime类型进行压缩,无论是否指定,”text/html”类型总是会被压缩的。
    • gzip_proxied any : Nginx作为反向代理的时候启用,决定开启或者关闭后端服务器返回的结果是否压缩,匹配的前提是后端服务器必须要返回包含”Via”的 header头。
    • gzip_vary on : 和http头有关系,会在响应头加个 Vary: Accept-Encoding ,可以让前端的缓存服务器缓存经过gzip压缩的页面,例如,用Squid缓存经过Nginx压缩的数据。。

后端项目

  下面来部署后端的nodejs项目,在/etc/nginx/conf.d目录下新建文件,该项目占用3000端口,则起名为api-xiaohuochai-cc-3000.conf

upstream api {
        server 127.0.0.1:3000;
}
server{
        listen 80;
        server_name api.xiaohuochai.cc;
        return 301 https://api.xiaohuochai.cc$request_uri;
}
server{
        listen 443 http2;
        server_name api.xiaohuochai.cc;
        ssl on;
        ssl_certificate /home/www/blog/crt/api.xiaohuochai.cc.crt;
        ssl_certificate_key /home/www/blog/crt/api.xiaohuochai.cc.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        if ($ssl_protocol = "") {
                rewrite ^(.*)https://$host$1 permanent;
        }
        location / {
            proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header X-Nginx-Proxy true;
                proxy_pass http://api;
                proxy_redirect off;
        }
}        

 

第二步:使用node来启动该文件

使用node test.js来执行该文件,当然也可以使用pm2

假设该服务器的ip为: 123.45.67.9,那么就可以通过123.45.67.9:8082来访问,可以在浏览器上看到hello world

然后编译安装

2.2.3 server虚拟主机

http服务上支持若干虚拟主机。每个虚拟主机一个对应的server配置项,配置项里面包含该虚拟主机相关的配置。在提供mail服务的代理时,也可以建立若干server。每个server通过监听地址或端口来区分。

  • listen
    监听端口,默认80,小于1024的要以root启动。可以为listen *:80listen 127.0.0.1:80等形式。

  • server_name
    服务器名,如localhostwww.example.com,可以通过正则匹配。

模块http_stream
这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡,upstream后接负载均衡器的名字,后端realserver以 host:port options; 方式组织在 {} 中。如果后端被代理的只有一台,也可以直接写在 proxy_pass 。

后台项目

  后台项目起名为admin-xiaohuochai-cc-3001.conf。由于项目采用react构建,与普通的静态网站有些不同

  1、前端路由

  由于使用前端路由,项目只有一个根入口。当输入类似/posts的url时,找不到这个页面,这是,nginx会尝试加载index.html,加载index.html之后,react-router就能起作用并匹配我们输入的/posts路由,从而显示正确的posts页面

try_files $uri $uri/ /index.html = 404;

  2、反向代理

  由于该项目需要向后端api.xiaohuochai.cc获取数据,但是后台占用的是3000端口,相当于跨域访问,这时就需要进行反向代理

    location /api/ {
        proxy_pass http://api/;
    }

  注意:一定要在api后面添加/,否则不生效

  3、配置缓存及CSP

expires 7d;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data: https://pic.xiaohuochai.site https://static.xiaohuochai.site; style-src 'self' 'unsafe-inline'; frame-src https://demo.xiaohuochai.site https://xiaohuochai.site;";

  下面是详细的配置文件

upstream admin {
        server 127.0.0.1:3001;
}
server{
    listen 80;
    server_name admin.xiaohuochai.cc;
    return 301 https://admin.xiaohuochai.cc$request_uri;
    root /home/www/blog/admin/build;
    index index.html;
}
server{
        listen 443 http2;
        server_name admin.xiaohuochai.cc;
        ssl on;
        ssl_certificate /home/www/blog/crt/admin.xiaohuochai.cc.crt;
        ssl_certificate_key /home/www/blog/crt/admin.xiaohuochai.cc.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        if ($ssl_protocol = "") {
                rewrite ^(.*)https://$host$1 permanent;
        }
    location /api/ {
        proxy_pass http://api/;
    }
    location / {
        index index.html;
        root /home/www/blog/admin/build;
        expires 7d;
        add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data: https://pic.xiaohuochai.site https://static.xiaohuochai.site; style-src 'self' 'unsafe-inline'; frame-src https://demo.xiaohuochai.site https://xiaohuochai.site;";
        try_files $uri $uri/ /index.html = 404;
    }
}         

 

3.2 nodejs服务(提供接口服务)

接口服务:就是指前端调用后端的api接口

常说的前端和后端,这里的nodejs服务(接口服务)其实就是后端,也就是说我们的后端使用的是nodejs来实现的。
其实就是将上两个例子结合起来,也就是:在服务器启动一个nodejs服务,然后使用nginx来作为反向代理以及负载均衡处理;

一般如果使用nodejs作为后端,会选择一个框架进行开发,常用框架有:express、Koa

主要分为两大步来实现该nodejs服务:

  • 编写后端(nodejs)代码
  • 配置nginx
    • 使用nginx作为反向代理
    • 使用nginx处理负载均衡
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module makemake install

2.2.4 location

http服务中,某些特定的URL对应的一系列配置项。

  • root /var/www/html
    定义服务器的默认网站根目录位置。如果locationURL匹配的是子目录或文件,root没什么作用,一般放在server指令里面或/下。

  • index index.jsp index.html index.htm
    定义路径下默认访问的文件名,一般跟着root

  • proxy_pass http:/backend
    请求转向backend定义的服务器列表,即反向代理,对应upstream负载均衡器。也可以proxy_pass http://ip:port

  • proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    这四个暂且这样设,如果深究的话,每一个都涉及到很复杂的内容,也将通过另一篇文章来解读。

关于location匹配规则的写法,可以说尤为关键且基础的,参考文章 nginx配置location总结及rewrite规则写法;

前台项目

  前台项目起名为www-xiaohuochai-cc-3002.conf。项目采用vue构建。该项目与后台项目类似,但稍有些不同。不同之处在于,使用主域名xiaohuochai.cc或二级域名www.xiaohuochai.cc都需要跳转

server{
        listen 443 http2;
        server_name www.xiaohuochai.cc xiaohuochai.cc;
...

  详细配置如下

upstream client {
        server 127.0.0.1:3002;
}
server{
    listen 80;
    server_name www.xiaohuochai.cc xiaohuochai.cc;
    return 301 https://www.xiaohuochai.cc$request_uri;
    root /home/www/blog/client/dist;
    index index.html;
}
server{
        listen 443 http2;
        server_name www.xiaohuochai.cc xiaohuochai.cc;
        ssl on;
        ssl_certificate /home/www/blog/client/crt/www.xiaohuochai.cc.crt;
        ssl_certificate_key /home/www/blog/client/crt/www.xiaohuochai.cc.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        if ($ssl_protocol = "") {
                rewrite ^(.*)https://$host$1 permanent;
        }
    location /api/ {
        proxy_pass http://api/;

    }
    location / {
        index index.html;
        root /home/www/blog/client/source/dist;
        expires 7d;
        add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://static.xiaohuochai.site ; img-src 'self' data: https://pic.xiaohuochai.site https://static.xiaohuochai.site; style-src 'self' 'unsafe-inline' https://static.xiaohuochai.site; frame-src https://demo.xiaohuochai.site https://xiaohuochai.site https://www.xiaohuochai.site;";
        try_files $uri $uri/ /index.html = 404;
    }
} 

 

3.2.1 编写后端代码

跟上面的使用nodejs来处理静态资源是一样的, 只不过是更复杂一些,需要对各个接口进行处理,假如是一个商品接口,就需要有:goods/get、goods/add、goods/delete、goods/update等接口,这是代码层面的;

因为我们的网站肯定是在服务器开机的时候一直运行的,否则我们的网站将无法访问,因此需要使用一些部署工具来处理nodejs服务,例如在node服务挂掉的时候可以重启、在服务器重启后,node服务也需要自动重启,常用的部署工具有:pm2

权限不够的话自己想办法。。sudo 一下

--prefix=PATH: 指定nginx的安装目录。默认 /usr/local/nginx

--conf-path=PATH: 设置nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/nginx.conf

--user=name: 设置nginx工作进程的用户。安装完成后,可以随时在nginx.conf配置文件更改user指令。默认的用户名是nobody。--group=name类似

--with-http_ssl_澳门新浦京娱乐场网站nginx服务器安装及配置文件详解,使用nginx部署网站。module: 使用https协议模块。默认情况下,该模块没有被构建。前提是openssl与openssl-devel已安装

--with-http_stub_status_module: 用来监控 Nginx 的当前状态

--with-http_gzip_static_module: 是针对 nginx serve 的静态文件,需要编译进去才能有

--with-http_realip_module: 通过这个模块允许我们改变客户端请求头中客户端IP地址值(例如X-Real-IP 或 X-Forwarded-For),意义在于能够使得后台服务器记录原始客户端的IP地址

--with-pcre:

设置PCRE库的源码路径,如果已通过yum方式安装,使用--with-pcre自动找到库文件。使用--with-pcre=PATH时,需要从PCRE网站下载pcre库的源码(版本4.4

8.30)并解压,剩下的就交给Nginx的./configure和make来完成。perl正则表达式使用在location指令和 ngx_http_rewrite_module模块中。

--with-zlib=PATH: 指定 zlib(版本1.1.3 - 1.2.5)的源码解压目录。在默认就启用的网络传输压缩模块ngx_http_gzip_module时需要使用zlib 。

--add-module=PATH: 添加第三方外部模块,如nginx-sticky-module-ng或缓存模块。每次添加新的模块都要重新编译(Tengine可以在新加入module时无需重新编译)

2.3 其它

SSR项目

  如果前端项目是服务器端渲染的SSR项目,则与普通的前端项目有很大不同,它不仅需要守护后端程序,还有前端静态资源的处理,如果是首页,还需要处理www

  详细配置如下

upstream client {
        server 127.0.0.1:3002;
}
server{
        listen 80;
        server_name www.xiaohuochai.cc xiaohuochai.cc;
    return 301 https://www.xiaohuochai.cc$request_uri;
}
server{
        listen 443 http2;
        server_name www.xiaohuochai.cc xiaohuochai.cc;
        ssl on;
        ssl_certificate /home/blog/client/crt/www.xiaohuochai.cc.crt;
        ssl_certificate_key /home/blog/client/crt/www.xiaohuochai.cc.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
    if ($host = 'xiaohuochai.cc'){
        rewrite ^/(.*)$ http://www.xiaohuochai.cc/$1 permanent;
    }
    location / {
        expires 7d;
        add_header Content-Security-Policy "default-src 'self' https://static.xiaohuochai.site; connect-src https://api.xiaohuochai.cc; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://static.xiaohuochai.site ; img-src 'self' data: https://pic.xiaohuochai.site https://static.xiaohuochai.site; style-src 'self' 'unsafe-inline' https://static.xiaohuochai.site; frame-src https://demo.xiaohuochai.site https://xiaohuochai.site https://www.xiaohuochai.site;";
        proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header X-Nginx-Proxy true;
                proxy_pass http://client;
                proxy_redirect off;

    }
} 

 

3.2.2 配置nginx

前端访问接口时,肯定不会使用ip地址来访问,因此使用nginx来做反向代理。
nginx配置如下:

upstream server {
  server 127.0.0.1:8083;
}

server {
    listen 80;
    server_name www.smallmage.com;

    location /api {
      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;

      # value for proxy_pass has to match upstream name
      proxy_pass http://server;
      proxy_redirect off;
    }
}

上面配置的意思就是:当访问www.smallmage.com/api时就将请求丢给proxy_pass设置的服务,也就是127.0.0.1:8083,假如我们的node服务就监听着8083端口,那么node服务就会接收到该请求,然后再对该请求进行处理,最后返回相应的数据

启动关闭 nginx 等常用操作

2.3.1 访问控制 allow/deny

Nginx 的访问控制模块默认就会安装,而且写法也非常简单,可以分别有多个allow,deny,允许或禁止某个ip或ip段访问,依次满足任何一个规则就停止往下匹配。如:

1
2
3
4
5
6
7
8
9
10
location /nginx-status {
  stub_status on;
  access_log off;
#  auth_basic   "NginxStatus";
#  auth_basic_user_file   /usr/local/nginx-1.6/htpasswd;

  allow 192.168.10.100;
  allow 172.29.73.0/24;
  deny all;
}

 

我们也常用 httpd-devel 工具的 htpasswd 来为访问的路径设置登录密码:

1
2
3
4
5
6
7
# htpasswd -c htpasswd admin
New passwd:
Re-type new password:
Adding password for user admin

# htpasswd htpasswd admin    //修改admin密码
# htpasswd htpasswd sean    //多添加一个认证用户

 

这样就生成了默认使用CRYPT加密的密码文件。打开上面nginx-status的两行注释,重启nginx生效。

参考

  • linux下部署nodejs服务器
  • linux下npm包设置,
  • centos下nginx安装
  • nginx配置
# 检查配置文件是否正确/usr/local/nginx/sbin/nginx -t# 查看编译选项/usr/local/nginx/sbin/nginx -V# 启动/usr/local/nginx/sbin/nginx # 默认配置文件 conf/nginx.conf,-c 指定#关闭/usr/local/nginx/sbin/nginx -s stop# orpkill nginx# 重启,不会改变启动时指定的配置文件/usr/local/nginx/sbin/nginx -s reload# 或者kill -HUP `cat /usr/local/nginx-1.6/logs/nginx.pid`# 也可以将 nginx 作为系统服务管理,下载 nginx 到/etc/init.d/,修改路径和可执行权限# service nginx {start|stop|status|restart|reload|configtest}

2.3.2 列出目录 autoindex

Nginx默认是不允许列出整个目录的。如需此功能,打开nginx.conf文件,在location,server 或 http段中加入autoindex on;,另外两个参数最好也加上去:

  • autoindex_exact_size off; 默认为on,显示出文件的确切大小,单位是bytes。改为off后,显示出文件的大概大小,单位是kB或者MB或者GB
  • autoindex_localtime on;
    默认为off,显示的文件时间为GMT时间。改为on后,显示的文件时间为文件的服务器时间
    1
    2
    3
    4
    5
    6
    
    location /images {
      root   /var/www/nginx-default/images;
      autoindex on;
      autoindex_exact_size off;
      autoindex_localtime on;
      }
    

参考

需要 php-fpm 的支持

直接使用自带的 php-fpm

如果没有,那重新编译 PHP,在原有的编译信息后加上 --enable-fpm

查看原本的编译信息

php -i | grep Configure

加上 --enable-fpm 选项进行重新编译

配置 php-fpm

 #复制一份配置文件 sudo cp /usr/local/php7/etc/php-fpm.conf.default.conf php-fpm.conf #复制一份用户配置文件,用户名是配置 php 时指定的 sudo cp /usr/local/php7/etc/php-fpm.d/www.conf.default www.conf #启动 php-fpm,mac 必须要以 root 用户启动,-R 参数表示 --allow-to-run-as-root sudo /usr/local/php7/sbin/php-fpm -R #查看一下php-fpm是否启动成功 ps aux | grep php-fpm # php-fpm 的默认端口号是 9000 netstat -ant | grep 90000

nginx 整合 php-fpm

location ~ .php$ { root /data/home/arnoliu/www/developers.e.qq.com/web; fastcgi_pass 127.0.0.1:9001; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /data/home/arnoliu/www/developers.e.qq.com/web$fastcgi_script_name; include fastcgi_params;}

nginx.conf 配置文件

nginx 配置文件主要分成四部分:

  • main:其他部分的会继承自 main
  • server:主要用于指定虚拟主机域名、IP 和端口
  • location:用于匹配路由信息
  • upstream:(主要为反向代理、负载均衡相关配置)upstream 主要用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡

server 继承 main,location 继承 server

upstream 既不会继承指令也不会被继承,它有自己的特殊指令

我的配置

worker_processes 8;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; access_log logs/access.log; sendfile on; keepalive_timeout 60; tcp_nopush on; tcp_nodelay on; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k; gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml; gzip_vary on; server { listen 80; server_name example.qq.com; root /data/home/arnoliu/www/example/web; charset utf-8; location / { root /data/home/arnoliu/www/example/web; index index.php index.html index.htm; } location ~ .php$ { root /data/home/arnoliu/www/example/web; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /data/home/arnoliu/www/example/web$fastcgi_script_name; include fastcgi_params; } }}

本文由澳门新浦京娱乐场网站发布于澳门新浦京娱乐场网站,转载请注明出处:澳门新浦京娱乐场网站nginx服务器安装及配置文件