Nginx使用总结

Nginx安装

安装

tar zxvf nginx-1.2.9.tar.gz#解压nginxcdnginx-1.2.9#进入目录./configure--prefix=/opt/soft/nginx--with-http_stub_status_module--with-http_ssl_module--with-http_realip_module#配置安装模块make install#安装复制代码

--prefix:指定安装目录,默认的安装目录是/usr/local/nginx;

--with-http_ssl_module:安装https服务模块

启动

/opt/soft/nginx/sbin/nginx/opt/soft/nginx/sbin/nginx -s stop# fast shutdown/opt/soft/nginx/sbin/nginx -s quit# graceful shutdown/opt/soft/nginx/sbin/nginx -s reload# reloading the configuration file/opt/soft/nginx/sbin/nginx -s reopen# reopening the log files复制代码

设置开机自启动:

echo"/opt/soft/nginx/sbin/nginx -c /opt/soft/nginx/conf/nginx.conf">> /etc/rc.local复制代码

Nignx配置虚拟主机、反向代理、负载均衡

虚拟主机

主要配置server模块的 listen 和 server_name

基于域名

server {

listen 80;

server_name test.a.com;

location / {

proxy_pass http://192.168.0.1; #反向代理到其他站点

}

}

server {

listen 80;

server_name test.b.com;

location / {

proxy_pass http://192.168.0.2; #反向代理到其他站点

}

}

注意: 配置文件下载服务器

server{listen80;server_namefile.download.com;charsetutf-8;location~ ^/(.*)${add_headerContent-Disposition"attachment; filename=$1";#设置headeralias"C:/Robot_Download/$1";#文件的本地位置}}

基于端口

server {

listen 80;

server_name localhost;

alias /data/html/index.html; #也可使用root、location等方式指向静态资源

}

server {

listen 81;

server_name localhost;

root /data/html/index.html; #也可使用alias、location等方式指向静态资源

}

基于ip

server{listen100.100.100.100:80;server_namelocalhost;location/ {alias/data/html/index.html;#也可使用alias、root等方式指向静态资源}}server{listen100.100.100.101:80;server_namelocalhost;location/ {alias/data/html/index.html;#也可使用alias、root等方式指向静态资源}}

反向代理

主要配置location模块的 proxy_pass

server {

listen 80;

server_name test.b.com;

location / {

proxy_pass http://192.168.0.2; #反向代理到其他应用服务器或web服务器

}

}

负载均衡

主要配置upstream和location模块的proxy_pass

upstream tomcat_server_pool{

ip_hash;

server 127.0.0.1:8090 weight=10; #设置访问权重,权重越高越容易被访问

server 127.0.0.1:8100 weight=10;

server 127.0.0.1:8110 weight=7;

}

server {

listen 80;

server_name test.b.com;

location / {

proxy_pass http://tomcat_server_pool; #反向代理到其他服务器集合

}

}

**ip_hash:**使用ip_hash策略的负载均衡解决session问题。每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可较好地解决session的问题。

location映射规则

alias和root的区别

location /svn/ {

root /data/ftp/;

autoindex on;

}

访问127.0.0.1/svn/a.jpg:则会进入到 /data/ftp/svn/a.jpg

location/svn/ {alias/data/ftp/;autoindexon;}

访问127.0.0.1/svn/a.jpg:则会进入到 /data/ftp/a.jpg

proxy_pass的url是否存在 / 的区别

注意:alias和root后的url都是要加/的

location /proxy/ {

proxy_pass http://127.0.0.1/;

}

访问:127.0.0.1/proxy/a.jpg:则会请求到:http://127.0.0.1/a.jpg

location/proxy/ {proxy_pass http://127.0.0.1;}

访问:127.0.0.1/proxy/a.jpg:则会请求到:http://127.0.0.1/proxy/a.jpg

“location /xxx/” 与“location ^~ /xxx/”区别

location = / { #表示匹配访问根目录

root html; #当前安装目录下的html,/html则表示服务器根目录下的html

index index.html index.htm;

}

location /svn/ { #表示匹配ip:port/svn/

root /data/;

autoindex on;

}

}

location ^~ /svn/ { #表示只要含有svn/就会被匹配

root /data/;

autoindex on;

}

“location /xxx/”表示匹配ip:port/xxx,需注意:

能匹配到 test.com/xxx/home.jpg;

不能匹配到 test.com/folder/xxx/home.jpg;

如果需要匹配到后者,应改为:location /folder/xxx/

科普:

一般默认都有location = /(精确匹配),而还有一种是 location /(模糊匹配)。

两者的区别是:模糊匹配就算匹配到也会一直匹配下去,而精确匹配不会。

例: 如上例中,把location = /换成location /,那么请求 112.74.55.239/svn/:

先会匹配 /,请求的物理路径变成了:/usr/local/nginx/html

继续匹配/svn/,实际访问的物理路径变成了: /usr/local/nginx/html/data/svn/

rewrite

location~ \.php${rewirte"^/php/(.*)$"http://localhost:8090/$1}

将localhost/php/test.php重定向到localhost:8090/test.php。如果正则表达式(regex)匹配到了请求的URI(request URI),这个URI会被后面的replacement替换

如果正则表达式(regex)里包含“}” or “;”字符,需要用单引号或者双引号把正则表达式引起来

如果replacement字符串里有新的request参数,那么之前的参数会附加到其后面,如果要避免这种情况,那就在replacement字符串后面加上“?”,eg: rewrite ^/users/(.*)$ /show?user=$1? last;=

可选的flag参数如下:

last

结束当前的请求处理,用替换后的URI重新匹配location;

可理解为重写(rewrite)后,发起了一个新请求,进入server模块,匹配location;

如果重新匹配循环的次数超过10次,nginx会返回500错误;

返回302 http状态码 ;

浏览器地址栏显示重定向后的url

break

结束当前的请求处理,使用当前资源,不在执行location里余下的语句;

返回302 http状态码 ;

浏览器地址栏显示重定向后的url

redirect

临时跳转,返回302 http状态码;

浏览器地址栏显示重定向后的url

permanent

永久跳转,返回301 http状态码;

浏览器地址栏显示重定向后的url

常用配置

支持后端获取真实客户端IP,而不是该代理的IP

proxy_set_header Host $http_host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header REMOTE-HOST $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

解决request.getScheme()获取不到真实协议

proxy_set_headerX-Forwarded-Proto$scheme;

websocket配置

map $http_upgrade $connection_upgrade {

default upgrade;

}

那么,作为一名Java程序员,怎样努力才能快速成长为一名高级的程序员或者架构师,或者说一名优秀的高级工程师或架构师应该有怎样的技术知识体系,这不仅是一个刚刚踏入职场的初级程序员,也是工作三五年之后开始迷茫的老程序员,都必须要面对和想明白的问题。为了帮助大家少走弯路,我总结出一个Java程序员的工作2-5年成长路线图。需要相关资料可以加群:810589193获取哦,点击链接加入群聊【Java架构学习交流群】:https://jq.qq.com/?_wv=1027&k=59ZopTn涉及的知识点(Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术)。

一、开源框架解析

二、架构筑基

三、高性能架构

四、微服务架构

五、团队协作开发

六、B2C商城项目实战

为了掌握这些技能,开发人员需能够自我激励,主动学习新技术,并在职业生涯中给自己扣上很多帽子。 继而不断挑战自我,然后更好地解决问题,这就是编程的本质。 知识很重要,在某些复杂问题的情况下更是如此。在变化如此之快的IT技术领域中,知识的获取在任何时候比我们已会的技能更为重要。

资料获取方式加群:810589193,点击链接加入群聊【Java架构学习交流群】:https://jq.qq.com/?_wv=1027&k=5deQUBl里面有阿里Java高级大牛直播讲解知识点,分享知识,课程内容都是各位老师多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!

Nginx依旧有很多细节和设计值得去深究学习,本篇Nginx先总结到此,后续有了更深入的了解,也会继续分享给大家。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容