Nginx服务器单站点http自动跳转https

本文详细介绍如何将HTTP网站转换为更安全的HTTPS网站。步骤包括:申请阿里云CA证书,配置Nginx监听端口,设置SSL,并将80端口流量重定向至443端口,最后重启LNMP完成转换。

本文简明扼要介绍http单站点转https方法:

1、申请CA证书

登录阿里云控制台,进入CA证书服务,申请证书

211249_Pte4_3695136.png

申请成功后,下载证书到本地,证书中有.key和.pem两个文件;

211759_c7Ez_3695136.png

2、正在nginx安装目录下面的conf中新建cert目录,将下载的证书放到cert中

212242_41ka_3695136.png

3、打开站点文件,将80端口转向至https

server{
    listen 80;
    server_name www.topsky.shop;
    rewrite ^(.*)$  https://$host$1 permanent; 
}

监听443端口,开启ssl

server
    {
        listen 443;
        #listen [::]:80;
        server_name www.topsky.shop;
        ssl on;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /www/webroot/topsky.shop;

        ssl_certificate   ../cert/214270003520198.pem;
        ssl_certificate_key  ../cert/214270003520198.key;
        ssl_session_timeout 5m;
        ssl_ciphers   ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;

        include other.conf;
        #error_page   404   /404.html;
        include enable-php-pathinfo.conf;

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /\.
        {
            deny all;
        }

        access_log  /home/wwwlogs/www.topsky.shop.log;
    }
4、重启lnmp即是实现http转https

     lnmp restart;

 

 

 

 

 

 

转载于:https://my.oschina.net/u/3695136/blog/1572475

在云服务器中,当访问Nginx监听的80端口时,出现自动跳转到`/login`页面的行为,通常与Nginx的配置不当或应用层逻辑有关。以下是几种常见的原因及解决方法: ### 1. Nginx配置导致的跳转问题 如果Nginx配置中存在重定向规则,例如将未认证的用户重定向到登录页面,或者在反向代理配置中未正确处理路径,可能导致访问80端口时跳转到`/login`。需要检查`nginx.conf`或站点配置文件中的`location`块,尤其是与认证或重定向相关的配置。 例如,以下配置可能导致未认证用户被重定向到`/login`: ```nginx location / { auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; if ($request_header_for_auth != "valid") { return 302 http://$host/login; } } ``` 如果不需要强制认证或重定向,可以移除或注释相关指令。 ### 2. Django应用中的中间件或视图逻辑导致跳转 在Django项目中,如果启用了`LoginRequiredMiddleware`或其他身份验证中间件,未登录用户访问受保护页面时会被重定向到登录页面。需要检查`settings.py`中是否启用了类似中间件: ```python MIDDLEWARE = [ ... 'django.contrib.auth.middleware.LoginRequiredMiddleware', ... ] ``` 如果不需要全局登录限制,可以将其移除或调整为仅对特定视图进行保护。 此外,Django的视图函数中也可能包含重定向逻辑,例如: ```python def my_view(request): if not request.user.is_authenticated: return redirect('login') ``` 若需允许匿名访问,应调整该逻辑或使用`@login_required(login_url='/')`装饰器控制特定视图的访问权限。 ### 3. Nginx反向代理端口配置不一致 在使用Nginx反向代理非80端口(如9123)时,如果Django应用内部生成的URL未包含正确的端口号,可能导致跳转错误。例如,访问`http://127.0.0.1:9123`时被重定向到`http://127.0.0.1/login/`,而不是保留端口号。解决方法是在Nginx配置中设置`Host`头,确保传递正确的主机名和端口: ```nginx location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; } ``` 这样,Django应用在生成重定向URL时会包含端口号,避免404错误。 ### 4. URL重写规则导致的跳转 某些情况下,Nginx可能配置了URL重写规则,将特定路径重定向到`/login`。例如: ```nginx location ~ ^/pages { rewrite ^ /login permanent; } ``` 如果不需要此类重定向,应修改或删除该`rewrite`规则。 ### 5. SSL强制跳转导致的异常 如果Nginx配置了HTTPHTTPS跳转,但SSL证书配置错误或未正确启用,可能导致意外跳转行为。例如: ```nginx server { listen 80; return 301 https://$host$request_uri; } ``` 如果当前不需要强制HTTPS,可以移除该配置。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值