简单的nginx / Angular项目强制HTTPS

时间:2017-11-17 20:47:32

标签: angular nginx

我有一个非常简单的Docker容器在nginx v1.13中运行Angular应用程序,我想在其上强制执行HTTPS。

我尝试过设置重写规则,但我要么只让它在根域工作(例如:http://myapp.com - > https://myapp.com),而不是在页面上工作(即:{{ 3}}保持http)

我尝试了$ localhost,$ host,$ server_name和$ request_uri的不同组合,但我通常最终得到了太多的重定向'错误。

我的域名有一个SSL证书,可与IIS中托管的其他应用程序一起使用,因此我非常确定它只是我的nginx配置。

这是配置文件(与图像不变):

```

服务器{     听80;     server_name localhost;

#charset koi8-r;
#access_log  /var/log/nginx/host.access.log  main;

location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
    try_files $uri $uri/ /index.html;
}

location /(assets)/  {
    gzip_static on;
    gzip_types text/plain text/xml text/css
    text/comma-separated-values
    text/javascript application/x-javascript
    application/atom+xml;

    expires off;
}
#error_page  404              /404.html;

# redirect server error pages to the static page /50x.html
#
error_page   500 502 503 504  /50x.html;
location = /50x.html {
    root   /usr/share/nginx/html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
#    proxy_pass   http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
#    root           html;
#    fastcgi_pass   127.0.0.1:9000;
#    fastcgi_index  index.php;
#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
#    include        fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
#    deny  all;
#}

}

```

更新

感谢您的帮助,但结果却是Azure配置问题。我必须设置自定义域选项以允许SSL重定向。

在本地运行容器时,来自@MatTheWhale的建议似乎对我的服务产生了影响,虽然我无法100%确认,因为localhost永远不是域的真正副本

1 个答案:

答案 0 :(得分:2)

对于HTTPS强制,我通常在我的conf中添加类似的东西:

server {
    listen 80;
    server_name myapp.com;
    return 301 https://$host$request_uri;
}

然后为HTTP请求重定向的位置创建另一个服务器块,并在那里移动所有实际配置:

server {
    listen 443;
    server_name myapp.com;

    # Move all your location blocks here
}