我阅读并遵循这个问题 ,为了configurationnginx强制一个页面的SSL(admin.php为XenForo),并且它适用于一些网站pipe理员,但不是为我自己。 我想知道如果有人有任何build议,如何改善这种configuration:
... ssl_certificate example.net.crt; ssl_certificate_key example.key; server { listen 80 default; listen 443 ssl; server_name www.example.net example.net; access_log /srv/www/example.net/logs/access.log; error_log /srv/www/example.net/logs/error.log; root /srv/www/example.net/public_html; location / { if ( $scheme = https ){ return 301 http://example.net$request_uri; } try_files $uri $uri/ /index.php?$uri&$args; index index.php index.html; } location ^~ /admin.php { if ( $scheme = http ) { return 301 https://example.net$request_uri; } include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTPS on; } location ~ \.php$ { try_files $uri =404; include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } ...
看来, location ^~ /admin.php块额外的信息是不必要的,有没有人知道一个简单的方法来避免重复的代码? 没有它,它跳过了PHP块,只是返回的PHP文件。
目前,当我导航到admin.php时,它在Firefox中正确应用https。 在Chrome中,它下载admin.php页面。 在Firefox中返回非https网站时,它不能正确返回到http,而是保持为SSL。 就像我刚才所说的,这只发生在我身上,其他pipe理员可以毫无问题地来回走动。
这是我能解决的问题吗? 有没有人知道我可以减lessconfiguration中的重复configuration选项的任何方式? 提前致谢!
编辑:清除caching/ Cookie似乎工作。 这是做http / httpsredirect的正确方法吗? 当我走的时候,我有点做了。
我可以减lessconfiguration中的重复configuration选项
可能使用@命名的位置。 请参阅文档 。