Nginx配置实践

Nginx 是开源的网站布署工具。传统的网站平台时LAMP,即linux + apache + mysql + php,新兴的网站也使用LNMP,其中的N即Nginx。

相对于apache,Nginx的优势在于轻量化,并发数高,配置简单,容易实现负载平衡和反向代理,与node.js和python配合方便,非常适合静态网站。但是由于软件较新,稳定性方面有待进一步验证,与php的配合需要其他工具辅助。所以现在一般前端用nginx作为反向代理抗住压力,apache作为后端处理动态请求。

nginx的常见命令:nginx -s reload/quit/stop/restart 查看网络服务并确认进程pid,netstat -anp |grep nginx ,强制中止进程,kill -s 9 2738

修改nginx的配置文件,/etc/nginx/mynginx.conf,核心配置是配置http、server、location等模块,设置proxy_pass等反向代理的模块,设置location的正则匹配,对不同的网址进行匹配。

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
worker_processes  2;
error_log /home/myname/webdata/logs/error.log;
error_log /home/myname/webdata/logs/notice.log notice;
error_log /home/myname/webdata/logs/info.log info;
pid /run/nginx.pid; # 这个地址不建议修改,与reload/quit等命令有关
events {
use epoll;
worker_connections 1024;
}

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 /home/myname/webdata/logs/access.log main;
rewrite_log on;
sendfile on;
#tcp_nopush on;
keepalive_timeout 120;
tcp_nodelay on;
gzip on;

server {
listen 80;
server_name mydomain.com;
location / {
proxy_pass http://127.0.0.1:115; #监听后转发
}
}

server {
listen 137;
server_name mydomain.com;
location / {
proxy_pass http://127.0.0.1:115; #监听后转发
}
}

server {
listen http://127.0.0.1:115; #实际的端口
server_name mydomain.com;
location / {
root /home/myname/mydomain.com/;
index index.html;
}

#代理配置参数
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

更全面的配置及学习资料参考如下,