https nginx 换成其他端口_Nginx多域名共享80端口配置

原本1台服务器上只有1个网站,请求由nginx代理然后转发到web app实际运行的非80端口上。现在多了1个网站,仍然想要部署在同一服务器上。

怎么做?

-》 Nginx多域名共享80端口配置:

1)2个网站,分别2个域名(可以用一级域名衍生出无数二级域名……),DNS解析到同一服务器IP上 -》 添加阿里云DNS解析A记录。

232bce66441d8e3db0c6a1c8619629ae.png

2)这样,所有web请求都将首先被nginx 80端口接收,但之后会依据域名的不同,交给不同的vhost处理,进而转发到不同的端口,转交给不同的web app。-》 修改nginx配置。

(这里,顺道给2个二级域名分别申请了免费证书,然后上了https)

[nginx配置]

配置入口:

/etc/nginx/nginx.conf  & nginxhttps.conf

其中是一些通用配置(比如access日志在哪里),还包含 虚拟主机的默认位置:

        include /etc/nginx/conf.d/*.conf; 
        include /etc/nginx/sites-enabled/*;

就是要创建虚拟主机,于是在/etc/nginx/conf.d/下新建2个.conf文件:

ded4927f964d04b93512f3794907d24c.png

1个conf文件就是1个vhost,这里名字其实不重要的,只要*.conf就可以被识别。

之前只有1个网站时,配置位于/etc/nginx/sites-available/default,现在挪过来,在server_name处修改成二级域名就行。

以pin.conf为例 :

server {
        listen 80 ;
        server_name pin.xxx.top ;
        rewrite ^(.*)$  https://$host$1 permanent;
    }
 

以上把所有发送到pin.xxx.top的http请求重定向到https。

server {
        # SSL configuration
         listen 443 ssl;
        server_name pin.lovelyhouse.top;

        ssl_certificate cert/2047845_pin.xxx.top.pem;
        ssl_certificate_key cert/2047845_pin.xxx.top.key;
             ssl_session_timeout 5m;
     ssl_ciphers HIGH:!aNULL:!MD5;
     ssl_prefer_server_ciphers on;


        client_max_body_size 100m;
        client_body_buffer_size 128k;
        proxy_connect_timeout     60s;

        location / {
            proxy_pass http://localhost:5000;
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
        }
}

以上是把所有发送到pin.xxx.top开头的https请求,转发到localhost:5000处理。这是一个基于flask的网站,默认运行在5000端口。

[解决https连接不安全的问题]

nginx配置正确情况下,中途出现访问网站https不安全,或者直接降成http请求。

-》 原因是证书能够证明的域名主机头和请求的主机头不一致。(例如,nginx配置和实际访问的都是blog.xxx.top,但对应证书能够证明的是www.xxx.top,这种情况下证书是无效的,略隐蔽吧……)

[关于nginx static和media资源的问题]

1)Django网站在上线时,nginx上要做这样的配置,否则资源可能找不到404:

            location /static {
       alias /home/webapp/mysite/static;
  }

            location /media {
        alias /home/webapp/mysite/media;
    }

2)然而flask没有做以上配置,static资源也能够成功加载(暂时还没有media)

3)测试后的现象:nginx上不配static也能成功找到资源,flask和Django都是,但media必须要配置。(最好还是配一下保险)

用Django自带server+nginx无指定static和media目录: static可以正常打开(只要直接是static),media不行……

ssl证书中的域名要和访问的一致,否则认为证书不合格还是http

参考:

https://blog.csdn.net/u010028869/article/details/86426635

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值