Nginx安装配置

nginx

Nginx

Nginx(发音同engine x)是异步框架的网页服务器,也可以用作反向代理负载平衡器HTTP 缓存。该软件由伊戈尔·赛索耶夫创建并于2004年首次公开发布。2011年成立同名公司以提供支持。2019年3月11日,Nginx 公司被 F5 Networks 以6.7亿美元收购。

Nginx 是免费的开源软件,根据类 BSD 许可证的条款发布。一大部分 Web 服务器使用 Nginx,通常作为负载均衡器。
Nginx 可以部署在网络上使用 FastCGI 脚本SCGI 处理程序WSGI 应用服务器Phusion Passenger 模块的动态 HTTP 内容,并可作为软件负载均衡器。

Nginx 使用异步事件驱动的方法来处理请求。Nginx 的模块化事件驱动架构可以在高负载下提供更可预测的性能。

Nginx 是一款面向性能设计的HTTP服务器,相较于 Apachelighttpd 具有占有内存少稳定性高等优势。与旧版本(<=2.2)的 Apache 不同,Nginx 不采用每客户机一线程的设计模型,而是充分使用异步逻辑从而削减了上下文调度开销,所以并发服务能力更强。整体采用模块化设计,有丰富的模块库和第三方模块库,配置灵活。 在 Linux 操作系统下,Nginx 使用 epoll 事件模型,得益于此,NginxLinux 操作系统下效率相当高。同时 NginxOpenBSDFreeBSD 操作系统上采用类似于 epoll 的高效事件模型 kqueue

根据 Netcraft 在2016年11月网络服务器调查,Nginx 被发现是所有“活跃”站点(被调查站点的18.22%)和百万最繁忙站点(被调查站点的27.83%)中使用次数最多的Web服务器。根据 W3Techs 的数据,前100万个网站中的37.7%,前10万个网站中的49.7%,以及前10000个网站中的57.0%被使用。 据 BuiltWith 统计,在全球前10000个网站中,有38.2%的网站使用 Nginx。 维基百科使用 Nginx 作为其 SSL 终端代理。 从 OpenBSD 5.2版本(2012年11月1日)开始,Nginx 成为了 OpenBSD 基础系统的一部分,提供了替代 Apache 1.3 系统的替代方案, 但是后来被替换为 OpenBSD 自己的 httpd(8)。(来自维基百科

安装

第一步:安装 Homebrew

打开终端输入一下命令

1
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

关于 homebrew 的介绍看这里

第二步安装 Nginx

使用 homebrew 安装

1
sudo brew install nginx

查看版本号

1
nginx -v
注意:
brew安装的文件路径一般默认在
/usr/local/Cellar/nginx/
nginx的真正路径在:
/usr/local/etc/nginx  

启动

1
启动 sudo nginx

打开浏览器输入http://localhost:8080
nginx 默认启动图片

其他常用指令

1
2
停止 sudo nginx -s stop
重启 sudo nginx -s reload

##常用配置

核心配置文件 nginx.conf

1
位置 /usr/local/etc/nginx/nginx.conf

nginx 配置文件主要分为六个区域:

  1. main(全局设置)
  2. events(nginx工作模式)
  3. http(http设置)
  4. sever(主机设置)
  5. location(URL匹配)
  6. upstream(负载均衡服务器设置)。

nginx.conf 常用配置

  • server模块
1
2
3
4
5
6
7
8
9
10
server {
listen 8080; #端口配置
server_name localhost; #域名配置

#charset koi8-r;

#access_log logs/host.access.log main;

······
}
  • location模块
1
2
3
4
location / {    
root html;
index index.html index.htm;
}

location /表示匹配访问根目录。
root指令用于指定访问根目录时,虚拟主机的web目录,这个目录可以是相对路径(相对路径是相对于nginx的安装目录)。也可以是绝对路径。默认的html读取路径是

1
路径  /usr/local/Cellar/nginx/[version]/html

这里的html文件夹实际上是一个替身(快捷方式),实际的默认文件位置是在

1
默认文件路径 /usr/local/var/www
  • 其他参数
1
2
3
4
5
6
7
listen:表示当前的代理服务器监听的端口,默认的是监听80端口。注意,如果我们配置了多个server,这个listen要配置不一样,不然就不能确定转到哪里去了。

server_name:表示监听到之后需要转到哪里去,这时我们直接转到本地,这时是直接到nginx文件夹内。

location:表示匹配的路径,这时配置了/表示所有请求都被匹配到这里

root:里面配置了root这时表示当匹配这个请求的路径时,将会在这个文件夹内寻找相应的文件,这里对我们之后的静态文件伺服很有用。

#配置 Tomcat

tomcat
通过 proxy_pass 配置请求转发地址。即当访问 localhost 的 8080 端口时,请求会跳转至 localhost 的 8180 端口处。修改完 Nginx 的配置后不需要重启 Nginx,输入上面的重启命令即可。

负载均衡配置

当一台服务器出现故障后,我们需要将请求自动转向另一台服务器,此种需求该如何配置呢?利用Nginx 也是比较方便能够实现,具体配置如下:
tomcat

注意,上面还加上了一个weight属性,此属性表示各服务器被访问到的权重,weight越高访问到的几率越高。

配置后访问 localhost:8080,跳转到 tomcat 的启动页:
nginx 默认启动图片

其他配置

tomcat

配置示例

1、配置 HTTP 服务(80端口)

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
# Virtual Host configuration for arlingbc.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#

# 丢弃缺乏 Host 头的请求
server {
listen 80;
return 444;
}

server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;

# 定义服务器的默认网站根目录位置
root /var/www/example/;

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;

# access log file 访问日志
access_log logs/nginx.access.log main;

# 禁止访问隐藏文件
# Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}

# 默认请求
location / {
# 首先尝试将请求作为文件提供,然后作为目录,然后回退到显示 404。
# try_files 指令将会按照给定它的参数列出顺序进行尝试,第一个被匹配的将会被使用。
# try_files $uri $uri/ =404;

try_files $uri $uri/ /index.php?path_info=$uri&$args =404;
access_log off;
expires max;
}

# 静态文件,nginx 自己处理
location ~ ^/(images|javascript|js|css|flash|media|static)/ {

#过期 30 天,静态文件不怎么更新,过期可以设大一点,
#如果频繁更新,则可以设置得小一点。
expires 30d;
}

# .php 请求
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
}

# PHP 脚本请求全部转发到 FastCGI 处理. 使用 FastCGI 默认配置.
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# include snippets/fastcgi-php.conf;
#
# # With php7.0-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php7.0-fpm:
# fastcgi_pass unix:/run/php/php7.0-fpm.sock;
#}

# 拒绝访问. htaccess 文件,如果 Apache 的文档根与 nginx 的一致
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}

2、配置 HTTPS 服务(443端口)

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


##
# 443 port
##
server {

##
# 阿里云参考配置
##

listen 443;
listen [::]:443;
server_name example.com www.example.com;

root /var/www/example/; # 为虚拟服务器指明文档的根目录
index index.html index.htm; # 给定URL文件

##
# 部署 HTTP 严格传输安全(HSTS)
##
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload;"

# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
gzip off;

##
# SSL configuration
##

ssl on;
ssl_certificate cert/certfile.pem; # 证书
ssl_certificate_key cert/certfile.key; # 私钥
ssl_session_timeout 5m; # 设置超时时间
# 密码套件配置
# 密码套件名称构成:密钥交换-身份验证-加密算法(算法-强度-模式)-MAC或PRF
ssl_ciphers ECDHE-RSA-AES128-GCM- SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.2; # 设置 SSL/TSL 协议版本号
ssl_prefer_server_ciphers on; # 控制密码套件优先级,让服务器选择要使用的算法套件
ssl_buffer_size 1400; # 减少TLS缓冲区大小,可以显著减少首字节时间(《HTTPS权威指南》P416)

##
# location configuration
##

# ...
}

参考

https://blog.csdn.net/zzk220106/article/details/72466765
https://www.cnblogs.com/naaoveGIS/p/5478208.html
https://www.jianshu.com/p/849343f679aa
配置详解

Powered by Hexo and Hexo-theme-hiker

Copyright © 2013 - 2020 KNOWLEDGE IS POWER All Rights Reserved.

访客数 : | 访问量 :