我有一个非常简单的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
永远不是域的真正副本
答案 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
}