本文主要讲述Nginx功能、代理部署方式,下一次将讲述Nginx内部参数调优设置和常见问题解决方案。
Nginx作为一种基于REST架空的Web跨平台服务器。基于事件驱动架构,使得其可以支持数以百万级别的 TCP 连接。由于Igor Sysoev 将 Nginx 代码开源,并且赋予BSD授权协议,因此Nginx拥有丰富的第三方功能插件。
本文选择的平台是Ubuntu14.04作为演示。
1、安装命令【apt-get install nginx】
2、启动命令【service nginx start】
3、查看Nginx运行状态【ps aux|grep nginx】
4、在浏览器输入【http://127.0.0.1/】即可看到Welcome to Nginx的欢迎页面
Nginx在Ubuntu平台的目录为【/ect/nginx】,我们主要会使用到的是【nginx.conf】配置文件,其内容对应的意思为:
【user www-data;】 Nginx在Linux系统中运行的身份为www-data
【worker_processes 4;】Nginx启动的工作进程数量为4个,一般值设置为服务器内核的数量;
【pid /run/nginx.pid;】 Nginx运行时的进程识别号为该文件所设置的值;
【events {
worker_connections 768; #单个Nginx工作进程最大并发链接数量为768
# multi_accept on;
}】
【http {
##
# Basic Settings
##
sendfile on; #启动高效传输文件的模式
tcp_nopush on; #数据包会累积一下再一起传输,可以提高一些传输效率。
tcp_nodelay on #启动TCP数据包缓存在少于MSS时不阻塞发出。于 tcp_nopush on同时开启时,则Nginx平衡使用。
keepalive_timeout 65; #长连接超时时间
types_hash_max_size 2048; #影响散列表的冲突率。types_hash_max_size越大,就会消耗更多的内存,但散列key的冲突率会降低, #检索速度就更快。types_hash_max_size越小,消耗的内存就越小,但散列key的冲突率可能上升。
# server_tokens off; #错误页面的标签上不表示 Nginx的版本。
# server_names_hash_bucket_size 64; #启动时出现could not build the server_names_hash, you should increase错误时请提高这个参 #数的值
# server_name_in_redirect off; #重定向的时候需不需要把服务器名写入head,基本上不会设成on。
include /etc/nginx/mime.types; #定义MIME类型和后缀名关联的文件的位置。
default_type application/octet-stream; #指定mime.types文件中没有记述到的后缀名的处理方法。
##
# Logging Settings
##
access_log /var/log/nginx/access.log; #访问日志位置
error_log /var/log/nginx/error.log; #错误日志位置
##
# Gzip Settings
##
gzip on; #使用gizp压缩提高网站的传输速度
gzip_disable "msie6"; #其他不压缩的情况,一般设为IE6以下
# 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/x-javascript text/xml application/xml application/xml+rss text/javascript;
##
# nginx-naxsi config
##
# Uncomment it if you installed nginx-naxsi
##
#include /etc/nginx/naxsi_core.rules;
##
# nginx-passenger config
##
# Uncomment it if you installed nginx-passenger
##
#passenger_root /usr;
#passenger_ruby /usr/bin/ruby;
##
# Virtual Host Configs ## 虚拟配置引入
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*; #启动并激活Server目录
}】
【#mail {
# # See sample authentication script at: #服务示例
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110; #监听本地110端口
# protocol pop3; #pop3协议
# proxy on; #解析开启
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}】
Nginx可以用来实现正向或反向代理服务。正向代理服务与反向代理服务我认为技术上是互通的。在概念上正向代理服务的应用场景在于客户端不能直接访问服务端资源时,正向代理服务器作为中间者将请求响应代为转发。客户端明确知道所要访问的服务器。例如大陆客户端想要访问推特,则可通过正向代理服务器来实现,又或者局域网内的客户端想要访问公网资源,也可以通过正向代理服务器来实现。而反向代理服务器和资源服务器,在客户端看来是一体的。例如淘宝客户端,将请求发送给反向代理服务器,反向代理服务器根据策略将请求交给服务器集群中的其中一台进行处理。这个过程对于客户端来说是透明的。
场景:假设局域网内部有一个客户端IP为192.168.65.122,该客户端想访问公网资源http://112.127.97.202:18890。则可以设置一个正向代理服务器,连接公网和局域网。正向代理服务器局域网IP为192.168.65.164,则开放该IP对应的8888端口。局域网客户端可通过访问192.168.65.164:8888来获取http://112.127.97.202:18890资源。
下面是实现步骤“”
1、进入【/etc/nginx/sites-enabled】目录
2、在【default】文件内添加下列这端话,保存并退出
server {
listen 192.168.65.164:8888;
location / {
proxy_pass http://112.127.97.202:18890;
}
}
3、运行【nginx -s reload】命令,使Nginx重新加载配置文件。
4、打开客户端浏览器,输入192.168.65.164:8888,即可看到http://112.127.97.202:18890内容
5、运行【tail -f /var/log/nginx/access.log】,可以查阅到客户端请求的日志
,