求助关于nginx泛域名解析下的nginx 反向代理 https问题

Nginx强大的正则表达式支持,可以使server_name的配置变得很灵活,如果你要做多用户博客,那么每个用户拥有自己的二级域名也就很容易实现了。下面我就来说说server_name的使用吧:server_name的匹配顺序nginx中的server_name指令主要用于配置基于名称虚拟主机,server_name指令在接到请求后的匹配顺序分别为:1、准确的server_name匹配,例如:server {listen 80;server_ ;...}2、以*通配符开始的字符串:server {listen 80;server_name *.;...}3、以*通配符结束的字符串:server {listen 80;server_name www.*;...}4、匹配正则表达式:server {listen 80;server_name ~^(?.+)\.howtocn\.org$;...}nginx将按照1,2,3,4的顺序对server name进行匹配,只有有一项匹配以后就会停止搜索,所以我们在使用这个指令的时候一定要分清楚它的匹配顺序(类似于location指令)。server_name指令一项很实用的功能便是可以在使用正则表达式的捕获功能,这样可以尽量精简配置文件,毕竟太长的配置文件日常维护也很不方便。下面是2个具体的应用:在一个server块中配置多个站点server{listen 80;server_name ~^(www\.)?(.+)$;index index.php index.root /data/wwwsite/$2;}站点的主目录应该类似于这样的结构:/data//data/wwwsite/linuxtone.org/data//data/这样就可以只使用一个server块来完成多个站点的配置。
在一个server块中为一个站点配置多个二级域名
实际网站目录结构中我们通常会为站点的二级域名独立创建一个目录,同样我们可以使用正则的捕获来实现在一个server块中配置多个二级域名:server{listen 80;server_name ~^(.+)?\.howtocn\.org$;index index.if ($host = ){rewrite ^}root /data//$1/;}站点的目录结构应该如下:/data//www//data//nginx/这样访问时root目录为/data//www/,时为/data//nginx/,以此类推。后面if语句的作用是将的方位重定向到,这样既解决了网站的主目录访问,又可以增加seo中对的域名权重。
多个正则表达式
如果你在server_name中用了正则,而下面的location字段又使用了正则匹配,这样将无法使用$1,$2这样的引用,解决方法是通过set指令将其赋值给一个命名的变量:server{listen 80;server_name ~^(.+)?\.howtocn\.org$;set $www_root $1;root /data//$www_root/;location ~ .*\.php?$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.fastcgi_param SCRIPT_FILENAME /data//$fastcgi_script_include fastcgi_}}
想让一个VPS专门做另一个VPS的前端,后端VPS每添加一个域名,前端VPS就要同时添加一个域名来反向代理,作为前端的VPS如果一个一个的添加后端VPS的域名,那么这个事情特别麻烦,能不能让其自动反向代理后端VPS呢,用到proxy_pass和$host就可以轻松实现。
以下例子为了省事,以lnmp为安装环境进行设置
修改前端VPS的nginx.conf文件,修改成以下内容:
server {listen 80;server_name $location / {proxy_pass http://www.31.gd/;proxy_set_header Host $proxy_proxy_set_header X-Real-IP $remote_proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_proxy_connect_timeout 60;proxy_read_timeout 600;proxy_send_timeout 600;}
下面的一并修改吧
location /.(php|php5)?${fastcgi_pass unix:/tmp/php-cgi.fastcgi_index index.include fcgi.}
location /status {stub_access_}
location /.(gif|jpg|jpeg|png|bmp|swf)${expires 30d;}
location /.(js|css)?${expires 12h;}
这样就可以实现了前端VPS可以反向代理任意域名到后端VPS,只要将域名解析到前端VPS,后端VPS进行域名绑定,那么就可以直接访问到了
多个域名,其中2个域名需支持泛域名解析&1、&2、&3、*.&4、*.&其中1,2,3为一台tomcat&4为独立tomcat&前端一台nginx&通过配置多个虚拟主机来实现该部署。&===============================&进入/etc/nginx/conf.d目录,所有虚拟主机的配置文件都在该目录下存放,配置。&配置支持泛域名&
#&# A virtual host using mix of IP-, name-, and port-based configuration&#&server {&&&& listen&&&&&& 81;&&&& server_name& *.;&&&& location / {&&&&& proxy_pass http://localhost:8080;&&&&&proxy_set_header&& Host&&& $&&&&& proxy_set_header&& X-Real-IP&& $remote_&&&&& proxy_set_header&& X-Forwarded-For $proxy_add_x_forwarded_&&&& }&}&
#&# A virtual host using mix of IP-, name-, and port-based configuration&#&server {&&&& listen&&&&&& 81;&&&& server_name& *.;&&&& location / {&&&&& proxy_pass http://localhost:8081;&&&&&proxy_set_header&& Host&&& $&&&&& proxy_set_header&& X-Real-IP&& $remote_&&&&& proxy_set_header&& X-Forwarded-For $proxy_add_x_forwarded_&&&& }&}&
泛域名解析关键为红色部分,如果没有红色部分,后端口对应的tomcat虚拟主机将无法获得域名信息,导致后端tomcat无法获取到对应的域名信息。&后端TOMCAT支持泛域名解析时,需要设置 host name 为 localhost 以支持泛域名指向。&
nginx 多域名配置
&nginx绑定多个域名可又把多个域名规则写一个配置文件里,也可又分别建立多个域名配置文件,我一般为了管理方便,每个域名建一个文件,有些同类域名也可又写在一个总的配置文件里。
&&&&&一、每个域名一个文件的写法
&&& 首先打开nginx域名配置文件存放目录:/usr/local/nginx/conf/servers ,如要绑定域名&则在此目录建一个文件:.conf 然后在此文件中写规则,如:
server&{&listen&&&&&& 80;&server_name&;&&&&&&&&&&&&&#绑定域名&index index.htm index.html index.&&&&& #默认文件&root /home/;&&&&&&&&&&&&&& #网站根目录include location.&&&&&&&&&&&&&&&&&&&&&&&&&&& #调用其他规则,也可去除}
然后重起nginx服务器,域名就绑定成功了
nginx服务器重起命令:/etc/init.d/nginx restart
&&&&二、一个文件多个域名的写法
&&& 一个文件添加多个域名的规则也是一样,只要把上面单个域名重复写下来就ok了,如:
server&{&listen&&&&&& 80;&server_name&;&&&&&&&&&&&&&#绑定域名&index index.htm index.html index.&&&&& #默认文件&root /home/;&&&&&&&&&&&&&& #网站根目录include location.&&&&&&&&&&&&&&&&&&&&&&&&&&& #调用其他规则,也可去除}
server&{&listen&&&&&& 80;&server_name&;&&&&&&&&&&&&&#绑定域名&index index.htm index.html index.&&&&& #默认文件&root /home/www/;&&&&&&&&#网站根目录include location.&&&&&&&&&&&&&&&&&&&&&&&&&&& #调用其他规则,也可去除}
&&&&三、不带www的域名加301跳转
&&& 如果不带www的域名要加301跳转,那也是和绑定域名一样,先绑定不带www的域名,只是不用写网站目录,而是进行301跳转,如:
server{listen 80;server_;rewrite ^/(.*) /$1}
&&&&四、添加404网页
&&& 添加404网页,都可又直接在里面添加,如:
server&{&listen&&&&&& 80;&server_name&;&&&&&&&&&&&&&#绑定域名&index index.htm index.html index.&&&&& #默认文件&root /home/;&&&&&&&&&&&&&& #网站根目录include location.&&&&&&&&&&&&&&&&&&&&&&&&&&& #调用其他规则,也可去除error_page 404& /404.&}
最后还有一个方法需要注意,可能有需要禁止IP直接访问80端口或者禁止非本站的域名绑定我们的IP,这样的话应该
如下处理,放到最前一个server上面即可:
& & server{
& & & &listen & 80
& & & &server_name & & &_;
& & & & return 403;
&&& 学会上面四种规则方法,基本就可以自己独立解决nginx 多域名配置问题了
阅读(...) 评论()nginx+tomcat 多域名,多tomcat的配置问题
作者:用户
浏览:383 次
nginx+tomcat多域名,多tomcat的配置问题tomcatserver配置如下:connectionTimeout="20000"redirectPort="8443"/&&En
nginx+tomcat 多域名,多tomcat的配置问题
tomcat server 配置如下:
connectionTimeout="20000"
redirectPort="8443" /&
&Engine name="Catalina" defaultHost="localhost"&
&Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/&
&Host name="localhost"
appBase="/webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false"&
&Context docBase="qcqy" path="" debug="0"
reloadable="true"/&
nginx 配置如下: server {
server_name
127.0.0.1;
location / {
proxy_pass http://localhost:8081/
proxy_set_header
proxy_set_header
proxy_set_header
X-Forwarded-For $proxy_add_x_forwarded_
这样启动完之后,我通过http://localhost:8081 可以直接访问项目, 在我启动nginx之后通过127.0.0.1访问到的却是tomcat的欢迎页面,请问各位大神是哪出问题了,应该是输入127.0.0.1访问的也是项目才对啊急~~~~~~在线等
【云栖快讯】2017互联网超级工程阿里双11完美落幕,交易额突破1682亿,但阿里工程师如何玩转“超级工程”,背后黑科技又是如何?12月13-14日,12位大咖直播分享揭秘1682亿背后技术实践,马上预约&&
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
6款热门基础云产品6个月免费体验;2款产品1年体验;1款产品2年体验
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
开发者常用软件,超百款实用软件一站式提供本月热门的内容
1 2 3 4 5 6 7 8 9 10
最近更新的内容查看: 355|回复: 0
求助关于nginx泛域名解析下的反向代理问题
主题帖子积分
在网上找了很久关于nginx的配置的文章,也看了如何配置反向代理和匹配无限二级域名,但是就是没有把这两项功能结合应用的方法。
我的具体情况如下:
有以下五个域名:
这五个域名都要解析到同一组web服务器集群上
其中用的是泛域名解析,这个域名下的所有二级域名也都要解析到这组服务器上。麻烦哪位大侠能解答一下这种情况下应该如何编写配置文件,主要是upstream部分不会配置。
先谢谢了!
为论坛做出突出贡献的会员
Powered by18:19 提问
nginx + tomcat 单应用多域名的反向代理问题求助
一台windows服务器IP,比如1.2.3.4 ,装了一个Tomcat 一个应用,注册了多个域名 比如:,
nginx的配置如下:
listen 80;
location / {
#Proxy Settings
proxy_set_header Host $
proxy_set_header X-Real-IP $remote_
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
listen 80;
location / {
#Proxy Settings
proxy_set_header Host $
proxy_set_header X-Real-IP $remote_
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
问题是, 访问到的页面 总是Welcome to nginx! ,nginx的默认页面不知怎么回事,望高手帮忙看看
其他相关推荐

我要回帖

更多关于 nginx 反向代理 缓存 的文章

 

随机推荐