http to https rewrite, non-standard port?
Igor Sysoev
igor at sysoev.ru
Wed Aug 3 19:05:38 UTC 2011
On Wed, Aug 03, 2011 at 04:20:39AM -0400, Quincy wrote:
> I have the same problem. I can't redirect http to https. Here is my
> config:
>
> server {
> listen 2121;
> server_name XXXXX;
> ssl on;
> ssl_certificate XXt;
> ssl_certificate_key XX;
> #server_name _;
> server_name_in_redirect off;
> port_in_redirect off;
>
> root XXX;
>
> location / {
> index index.php;
> error_page 404 = @mediawiki;
> error_page 497 = @https;
> #error_page 400 = @https;
> error_page 400 https://$host:2121$request_uri;
> auth_basic "Restricted";
> auth_basic_user_file XXXX;
> }
>
> location @mediawiki {
> rewrite ^/([^?]*)(?:\?(.*))? /index.php?title=$1&$2 last;
> }
>
> location @https {
> rewrite ^ https://$host:2121$request_uri? permanent;
> }
>
> location ~ \.php$ {
> fastcgi_param QUERY_STRING $query_string;
> fastcgi_param REQUEST_METHOD $request_method;
> fastcgi_param CONTENT_TYPE $content_type;
> fastcgi_param CONTENT_LENGTH $content_length;
> fastcgi_param SCRIPT_NAME $fastcgi_script_name;
> fastcgi_param REQUEST_URI $request_uri;
> fastcgi_param DOCUMENT_URI $document_uri;
> fastcgi_param DOCUMENT_ROOT $document_root;
> fastcgi_param SERVER_PROTOCOL $server_protocol;
> fastcgi_param GATEWAY_INTERFACE CGI/1.1;
> fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
> fastcgi_param REMOTE_ADDR $remote_addr;
> fastcgi_param REMOTE_PORT $remote_port;
> fastcgi_param SERVER_ADDR $server_addr;
> fastcgi_param SERVER_PORT $server_port;
> fastcgi_param SERVER_NAME $server_name;
>
> # PHP only, required if PHP was built with --enable-force-cgi-redirect
> fastcgi_param REDIRECT_STATUS 200;
>
> fastcgi_pass 127.0.0.1:9000;
> fastcgi_index index.php;
> fastcgi_param SCRIPT_FILENAME XXXX/$fastcgi_script_name;
> fastcgi_param HTTPS on;
> }
>
>
> }
>
> Https is working flawlessly, but when I try http I get an error (400 Bad
> Request
>
> The plain HTTP request was sent to HTTPS port
> nginx/1.0.5) instead of redirect.
As Maxim already said, you should handle 497 error on server level.
Besides, you may set URL to redirect in error_page directive:
- error_page 497 = @https;
+ error_page 497 https://$host:2121$request_uri;
--
Igor Sysoev
More information about the nginx
mailing list