Nginx配置的标准模板
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;#该域名对应的访问端口号
server_name localhost;#域名或IP
location / { #其中的'/'代表虚拟路径名,仅仅为一个'/'则代表这是个首页虚拟路径(输入域名访问时显示的页面)
root html;#静态资源所在的真实目录名
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
安装Nginx1.8
0.上传nginx的tar包
/**
* nginx-1.8.0.tar.gz
*/
1.安装nginx的依赖
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
2.创建nginx安装路径:
mkdir /usr/local/nginx
3.解压nginx
tar -xvf nginx-1.8.0.tar.gz -C /usr/local/nginx
/**
* 1.在nginx所在的压缩tar包所在的文件夹下运行该命令
* 2."nginx-1.8.0.tar.gz"是nginx的压缩包的名字
*/
4.编译nginx
4.1.进入nginx的文件目录
cd /usr/local/nginx/nginx-1.8.0
4.2.编译nginx
./configure
make
make install
5.开放nginx的80端口
5.1.开放80端口
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
5.2.开放的端口永久保存到防火墙
/etc/rc.d/init.d/iptables save
6.运行nginx
6.1.进入nginx的运行目录
cd /usr/local/nginx/sbin
6.2.运行nginx
./nginx
7.关闭/重启Nginx
7.3.关闭
./nginx -s stop
5.4.重启
./nginx -s reload
应用:发布静态网站
注意在
格式模板:
server {
listen 80;#该域名对应的访问端口号
server_name localhost;#域名或IP
location / { #其中的'/'代表虚拟路径名,仅仅为一个'/'则代表这是个首页虚拟路径(输入域名访问时显示的页面)
root html;#指定的真实资源目录,此处为'html'目录
index index.html index.htm;#默认的首页文件名,此处为index.html
}
}
应用:虚拟主机
通过虚拟目录来区分
格式模板:
server {
listen 80;#该域名对应的访问端口号
server_name localhost;#域名或IP
location / { #此处的'/'为自定义的虚拟路径. 仅仅只有一个斜杠的话,则代表为默认的首页虚拟路径,且只能用'root'来声明真实路径
root hmly; #此处为真实路径. 当虚拟路径只有一个斜杠'/'时,那么真实路径必须用'root'来定义.
index index.html index.htm;
}
location /b { #此处的'/b'为自定义的虚拟路径. 当虚拟路径不仅仅是一个斜杠的'/'时,那么只能用'alias'来声明真实路径.
alias hmsc; #可以使用绝对路径,在使用alias的时候,路径最后一定要有.一个server大框框中,设置多个虚拟目录时只能存在一个root定义的虚拟目录,
#其余的虚拟目录用'alias'定义
index index.html index.htm;
}
}
通过端口号来区分
格式模板:
server {
listen 80;
server_name localhost;
location / {
root hmly;
index index.html index.htm;
}
}
server {
listen 81;
server_name localhost;
location / {
root hmsc;
index index.html index.htm;
}
}
通过不同域名来区分(多用)
格式模板:
#复制server,修改server_name
#配置旅游网
server {
listen 80;
server_name www.aaa.com;
location / {
root hmly;
index index.html index.htm;
}
}
#配置商城网
server {
listen 80;
server_name www.bbb.com;
location / {
root hmsc;
index index.html index.htm;
}
}
反向代理(负载均衡)
负载均衡的应用背景:tomcat的最大并发数只有200个,而nginx最大并发数可以5万个.
那为何不用nginx直接作为web服务器呢?因为nginx只支持html静态资源,而不支持java编译的class字节码文件以及php文件.所以只能用tomcat做web服务器.
但是tomcat最大并发数只有200个,如果要同时并发1000个人的使用,那么就需要部署5个tomcat服务才行.这称之为tomcat集群.
那么,现在出现了2个问题:
问题1.当部署了5个tomcat服务,那么人们就要记住5个ip地址才可以
问题2.尽管部署了5个tomcat服务,如果人们都只访问其中一个tomcat,那么还是会造成并发超过200.
这个时候,nginx的反向代理和负载均衡就诞生了.而反向代理本身就是负载均衡,它解决以上2个问题.
那就是当人们访问某个站点时,会先触动nginx,由nginx来均衡地把这个人的访问分发给tomcat集群中的某个tomcat服务器.
格式模板
普通http
upstream server_lb{ #此处为集群的web服务器连接定义处,nginx会根据下面各个服务器的状态,把访问者均衡的分配到如下某个web服务.
server 172.121.2.3:8080; #tomcat服务器1
server 221.213.16.32:8080; #tomcat服务器2
server 131.26.10.1:8080; #tomcat服务器3
}
server {
listen 80;#端口
server_name localhost;#此处为需要进行负载均衡的域名,当访问该域名,就会把数据负载均衡到上面的tomcat集群处.
location / {
//代理
proxy_pass http://server_lb;#此处为代理转向处,格式为http://xxx; 其中'xxx'必须同upstream处的名字相同
index index.html index.htm;
}
}
加密https
upstream web {
server 192.168.177.69:9081;
server 192.168.177.69:9082;
}
server {
listen 11443 ssl;# 端口
server_name 192.168.177.69;# 地址,可以是域名也可以是ip
ssl_certificate ssl.pem;
ssl_certificate_key ssl.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4!DH:!DHE:!DES:!3DES;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://web;
}
location /3netFree/{ # 虚拟路径
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://192.168.177.69:9081/v2-0.0.1-SNAPSHOT-interface/;# 实际要转向的地址。
}
}