Nginx 配置与操作

nginx location 匹配规则

location [=|~|~*|^~] /uri/ { … }

模式 含义
location = /uri = 表示精确匹配,只有完全匹配上才能生效
location ^~ /uri ^~ 开头对URL路径进行前缀匹配,并且在正则之前。
location ~ /uri 开头表示区分大小写的正则匹配
location ~* /uri 开头表示不区分大小写的正则匹配
location /uri 不带任何修饰符,也表示前缀匹配,但是在正则匹配之后
location / 通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default

nginx 参数

location
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$args: 这个变量等于请求行中的参数,同$query_string
$content_length: 请求头中的Content-length字段。
$content_type: 请求头中的Content-Type字段。
$document_root: 当前请求在root指令中指定的值。
$host: 请求主机头字段,否则为服务器名称。
$http_user_agent: 客户端agent信息
$http_cookie: 客户端cookie信息
$limit_rate: 这个变量可以限制连接速率。
$request_method: 客户端请求的动作,通常为GET或POST。
$remote_addr: 客户端的IP地址。
$remote_port: 客户端的端口。
$remote_user: 已经经过Auth Basic Module验证的用户名。
$request_filename: 当前请求的文件路径,由root或alias指令与URI请求生成。
$scheme: HTTP方法(如http,https)。
$server_protocol: 请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
$server_addr: 服务器地址,在完成一次系统调用后可以确定这个值。
$server_name: 服务器名称。
$server_port: 请求到达服务器的端口号。
$request_uri: 包含请求参数的原始URI,不包含主机名,如:/test/index?arg=baz。
$uri: 不带请求参数的当前URI,$uri不包含主机名,如/test/index。
$document_uri: 与$uri相同。

使用Nginx和HTTPS / SSL保护网站

保护机密数据的最简单方法是仅使用HTTPS为您的网站提供服务。
要使用HTTPS加密,必须先使用SSL设置服务器。这要求你:
· 安装SSL的系统包(通常这是被调用的包 openssl)
· 确保Nginx包含SSL支持
· 购买或创建SSL证书并将其放在服务器上的某个位置
· 配置Nginx以使用这些SSL证书

如何保护所有网站流量

下面是一个示例Nginx配置,它通过强制将所有HTTP(端口80)流量重定向到HTTPS(端口443)来保护所有网站流量。
它使用两个server块; 第一个侦听HTTP流量并将其发送到第二个,它处理HTTPS流量。
以下一些假设:

你已经把你的SSL证书文件 yoursite.com.crt ,并 yoursite.com.key 在 /etc/ssl/localcerts/目录
您已经设置了一个正在侦听端口8080的node实例
您正在使用该域名 yoursite.com

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
user root;
# 启动进程,通常设置成和cpu的数量相等
worker_processes auto;
pid /run/nginx.pid;

events {
# 工作模式及连接数上限
worker_connections 1024;
}
# upstream负载均衡,weight是权重,可以根据机器配置定义权重。权重越高被分配到的几率越大。
upstream node {
server 192.168.1.1:8080 weight=5;
server 192.168.1.2:8080;
}

http {
# 指令用来设置日志的记录格式
log_format main '$remote_addr - $remote_user [$time_local] "$request"'
'$status $body_bytes_sent "$http_referer"'
'"$http_user_agent" "$http_x_forwarded_for"';
# 启动高效传输文件的模式
sendfile on;
# 防止网络阻塞
tcp_nopush on;
# 防止网络阻塞,禁用nagle算法,即不缓存数据
tcp_nodelay on;

keepalive_timeout 65;
types_hash_max_size 2048;
# 加载定义mime类型和扩展名之间关联的文件。
include /etc/nginx/mime.types;
default_type application/octet-stream;

server {
# 侦听80端口
listen 80 default_server;
# 定义使用 yoursite.com访问
server_name yoursite.com;
# 重写到HTTPS地址。
# rewrite ^ https//$server_name$request_uri permanent;
# 更好的配置
return 301 http://example.com$request_uri;
}

server {
listen 443 ssl http2;
server_name yoursite.com;
ssl on;
# 证书公钥
ssl_certificate /etc/ssl/localcerts/yoursite.com.crt;
# 证书私钥
ssl_certificate_key /etc/ssl/localcerts/yoursite.com.key;
# 客户端可以重用会话缓存中ssl参数的过期时间
ssl_session_timeout 10m;
# 用于启动特定的加密协议
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# 加密套件
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
# 设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件。
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/yoursite.com.access.log;
error_log /var/log/nginx/yoursite.com.error.log;

# 默认请求
location / {
# 反向代理, 对应upstream负载均衡器。也可以proxy_pass http://ip:port。
proxy_pass https://node;
# 重新定义或添加字段传递给代理服务器的请求头
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header XForwardedFor $proxy_add_x_forwarded_for;
}

# Nginx 状态监控配置
location ~ ^/NginxStatus/ {
stub_status on;
access_log off;
}
}
}

Google Chrome 默认非安全端口列表,建议尽量避免以下端口

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
1,    // tcpmux
7, // echo
9, // discard
11, // systat
13, // daytime
15, // netstat
17, // qotd
19, // chargen
20, // ftp data
21, // ftp access
22, // ssh
23, // telnet
25, // smtp
37, // time
42, // name
43, // nicname
53, // domain
77, // priv-rjs
79, // finger
87, // ttylink
95, // supdup
101, // hostriame
102, // iso-tsap
103, // gppitnp
104, // acr-nema
109, // pop2
110, // pop3
111, // sunrpc
113, // auth
115, // sftp
117, // uucp-path
119, // nntp
123, // NTP
135, // loc-srv /epmap
139, // netbios
143, // imap2
179, // BGP
389, // ldap
465, // smtp+ssl
512, // print / exec
513, // login
514, // shell
515, // printer
526, // tempo
530, // courier
531, // chat
532, // netnews
540, // uucp
556, // remotefs
563, // nntp+ssl
587, // stmp?
601, // ??
636, // ldap+ssl
993, // ldap+ssl
995, // pop3+ssl
2049, // nfs
3659, // apple-sasl / PasswordServer
4045, // lockd
6000, // X11
6665, // Alternate IRC [Apple addition]
6666, // Alternate IRC [Apple addition]
6667, // Standard IRC [Apple addition]
6668, // Alternate IRC [Apple addition]
6669, // Alternate IRC [Apple addition]

安装Mongodb

要安装最新的稳定版本的MongoDB,您应该首先添加MongoDB存储库。

添加MongoDB资源库

移动到以下目录

1
# cd /etc/yum.repos.d/

使用您喜欢的文本编辑器创建以下文件:

1
# vim mongodb-org-3.4.repo

对于最新的稳定版本的MongoDB,粘贴文件中的以下行,然后保存并退出:

1
2
3
4
5
6
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

更新执行以下命令的存储库列表:

1
# yum repolist

现在您可以使用“Yum”安装最新的稳定版本的MongoDB:

1
# yum install mongodb-org -y

配置SELINUX

如果使用SELinux,则必须配置SELinux以允许MongoDB在基于Red Hat Linux的系统上启动

如果SELinux处于强制模式,则可以访问MongoDB部署将使用的相关端口(例如27017)。

1
# semanage port -a -t mongod_port_t -p tcp 27017
管理您的MongoDB服务

您可以使用“systemctl”管理您的MongoDB服务:

为了使MongoDB在启动时运行:

1
2
3
4
5
# systemctl enable mongod

或者

# chkconfig mongod on

对于启动/停止MongoDB服务:

1
2
3
4
5
6
7
8
9
# systemctl start mongod

# systemctl stop mongod

或者

# service mongod start

# service mongod stop

查看您的MongoDB状态:

1
2
3
4
5
# systemctl status mongod

或者

# service mongod status

Powered by Hexo and Hexo-theme-hiker

Copyright © 2013 - 2018 liang shuang All Rights Reserved.

Cool 保留所有权利