window下
启动nginx C:\server\nginx-1.0.2>nginx.exe
中止nginx C:\server\nginx-1.0.2>nginx.exe -s stopcss
#设定实际的服务器列表 upstream tomcatserver1{ server 127.0.0.1:8080; } #HTTP服务器 server { #监听8090端口,用于HTTP协议 listen 8090; #定义使用localhost访问 server_name localhost; #首页 index index.html #编码格式 charset utf-8; #指向webapp的目录 #root D:\01_Workspace\Project\github\zp\SpringNotes\spring-security\spring-shiro\src\main\webapp; #反向代理的路径(和upstream绑定),location 后面设置映射的路径 location / { proxy_pass http://tomcatserver1; } }
#设定负载均衡的服务器列表 upstream load_balance_server { #weigth参数表示权值,权值越高被分配到的概率越大 server 192.168.1.11:80 weight=5; server 192.168.1.12:80 weight=1; server 192.168.1.13:80 weight=6; } #HTTP服务器 server { #侦听80端口 listen 80; #定义使用www.xx.com访问 server_name www.helloworld.com; #对全部请求进行负载均衡请求 location / { root /root; #定义服务器的默认网站根目录位置 index index.html index.htm; #定义首页索引文件的名称 proxy_pass http://load_balance_server ;#请求转向load_balance_server 定义的服务器列表 #如下是一些反向代理的配置(可选择性配置) #proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; #后端的Web服务器能够经过X-Forwarded-For获取用户真实IP proxy_set_header X-Forwarded-For $remote_addr; proxy_connect_timeout 90; #nginx跟后端服务器链接超时时间(代理链接超时) proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时) proxy_read_timeout 90; #链接成功后,后端服务器响应时间(代理接收超时) proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小 proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k如下的话,这样设置 proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2) proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传 client_max_body_size 10m; #容许客户端请求的最大单文件字节数 client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数 } }
http 的默认端口号是 80,若是在一台服务器上同时启动 3 个 webapp 应用,都用 80 端口,确定是不成的。因此,这三个应用须要分别绑定不一样的端口号
html
upstream product_server{ server www.helloworld.com:8081; } upstream admin_server{ server www.helloworld.com:8082; } upstream finance_server{ server www.helloworld.com:8083; } server { #此处省略一些基本配置 #默认指向product的server location / { proxy_pass http://product_server; } location /product/{ proxy_pass http://product_server; } location /admin/ { proxy_pass http://admin_server; } location /finance/ { proxy_pass http://finance_server; } }
使用 nginx 配置 https 须要知道几点:
HTTPS 的固定端口号是 443,不一样于 HTTP 的 80 端口
SSL 标准须要引入安全证书,因此在 nginx.conf 中你须要指定证书和它对应的 keyandroid
HTTPS服务器 server { #监听443端口。443为知名端口号,主要用于HTTPS协议 listen 443 ssl; #定义使用www.xx.com访问 server_name www.helloworld.com; #ssl证书文件位置(常见证书文件格式为:crt/pem) ssl_certificate cert.pem; #ssl证书key位置 ssl_certificate_key cert.key; #ssl配置参数(选择性配置) ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; #数字签名,此处使用MD5 ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root /home/wwwroot/default; index index.html index.htm; } location ~/hone/{ proxy_pass http://127.0.0.1:8080; index dashboard index; 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; } }
server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location /test { root c:/www/; #对应www目录下的test目录,注意文件名和文件夹名不要重复 index index.html index2.htm; #html文件名称 } location / { root c:/www/default; #对应www目录下的default目录 index index.html index2.htm; #html文件名称 } location ~ .*\. (gif|jpg|jpeg|png|bmp|swf|css|js|eot|svg|ttf|woff|woff2|properties|json)$ { root c:/www/test/; if (-f $request_filename) { expires 1d; break; } } }
当我输入 localhost/ 、localhost/login.html 对应目录是 /www/default
当我输入 localhost/test/ 、localhost/test/login.html 对应目录是 /www/testnginx
可是这样配置有个问题,就是静态资源的访问问题,由于每一个项目的静态资源是不在一个文件夹下的git
server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root c:/www/default/; index index.html index.htm; } location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ { root c:/www/default/; expires 1d; } } server { listen 80; server_name abc.localhost;#二级域名 #charset koi8-r; #access_log logs/host.access.log main; location / { root c:/www/test/; index index.html index.htm; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css|js|eot|svg|ttf|woff|woff2|properties|json)$ { root c:/www/test/; if (-f $request_filename) { expires 1d; break; } } }
7、nginx实现移动端和PC访问不一样页面github
location / { #判断移动端,跳转转到m.aaa.com if ($http_user_agent ~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry)) { rewrite ^/(.*)$ http://m.aaa.com redirect;#这里随意使用,这一行表明域名栏会跳转到m.aaa.com #proxy_pass http://101.200.141.xx:8909;#这一行表明域名不会改变,继续使用aaa.com,可是真正使用的是 m.aaa.com } }
location / { root /home/wwwroot/default; index index.html index.htm; } location ~/hone/{ proxy_pass http://127.0.0.1:8080; index dashboard index; 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; }