nginx 可以进行反向代理、负载均衡、还能解决跨域问题。
在 http://nginx.org/ 下载对应版本的nginx。
在 nginx 的目录下打开 nginx 使用
start nginx
或者
双击 nginx.exe
状态:描述
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉
- 基本操作项
停止nginx服务
nginx -s stop
重启nginx
每次修改完.conf文件就需要重启nginx
nginx -s reload
检查配置
检查修改的nginx.conf配置是否正确
如果出现ok和successfull就代表正确了,其他的都不对
nginx -t
基本目录配置
给域名指定绑定的文件夹
server{ listen 80; server_name www.website.com; #绑定域名 index index.htm index.html index.php; #默认文件 root /home/www/website.com; #网站根目录 include location.conf; #调用其他规则,也可去除 }
域名跳转配置
没有www的域名,跳转到www的域名
server{ listen 80; server_name website.com; rewrite ^/(.*) http://www.website.com/$1 permanent; }
配置项目端口
server{ listen 80; location / { proxy_pass http://10.10.10.10:8080; } }
Upstream模块实现负载均衡
// 修改nginx.conf worker_processes 1; events { worker_connections 1024; } http { upstream yourhost { ip_hash; server 39.106.145.33; server 47.93.6.93; } server { listen 8080; location / { proxy_pass http://yourhost; } } }
worker_processes
//工作进程数,和CPU核数相同
worker_connections
//每个进程允许的最大连接数
upstream模块
//负载均衡就靠它
//语法格式:upstream name {}
//ip_hash它的作用是如果第一次访问该服务器后就记录,之后再访问都是该服务器了,这样比如第一次访问是33服务器,那之后再访问也会分配为33服务器访问了
//里面写的两个server分别对应着不同的服务器
server模块
//实现反向代理
//listen监督端口号
//location / {}访问根路径
//proxy_pass http://yourhost,代理到yourhost里两个服务器上
- 解决TIME_WAIT过多问题:
upstream http_backend { server 127.0.0.1:8080; keepalive 16; } server { ... location /http/ { proxy_pass http://http_backend; proxy_http_version 1.1; proxy_set_header Connection ""; ... } }
查看端口占用状况:查看端口状态
- 修改 http 请求权限
查看403状态
curl -v -X OPTIONS http://yoursite.com>
查看405
curl -v -X TRACE http://yoursite.com
– 修改 nginx 权限
http server location语句块中添加
if ($request_method !~* GET|POST) { return 403; }
– 重启 nginx
关闭 nginx 占用的端口的进程,再重启 nginx
- 修改 niginx 版本的查看权限
server_tokens off;
以上代码,
放在 http server location 语句块中,隐藏 403 错误时的版本输出
放在 http 语句块中,隐藏 405 错误时的版本输出
编辑fastcgi.conf文件:nginx/conf/fastcgi.conf
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
# 改为:
fastcgi_param SERVER_SOFTWARE nginx;
其它:
正向代理和反向代理
正向代理需要你主动设置代理服务器ip或者域名进行访问,由设置的服务器ip或者域名去获取访问内容并返回;
而反向代理不需要你做任何设置,直接访问服务器真实ip或者域名,但是服务器内部会自动根据访问内容进行跳转及内容返回,你不知道它最终访问的是哪些机器。
负载均衡
当用户访问网站的时候,先访问一个中间服务器,再让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入选择的服务器。
反向代理和负载均衡参考: