1

nginx をフロントエンド (バックエンドは http を使用) として使用して、負荷分散された SSL ベースの RESTful システムをセットアップしようとしています。完全な URL パスと 1 つの引数をアプリケーションに渡す際に問題が発生しています。

これは /etc/nginx/sites-available/default にあります:

upstream backend {
  server 10.200.40.100;
  server 10.200.40.101;
}

server {
  listen  443;
  server_name localhost;
  ssl  on;
  ssl_certificate  /etc/ssl/certs/reverse_chained_star_comtex_com.crt;
  ssl_certificate_key  /etc/ssl/certs/star_comtex_com.key;
  ssl_session_timeout  5m;
  ssl_protocols  SSLv2 SSLv3 TLSv1;
  ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
  ssl_prefer_server_ciphers   on;

underscores_in_headers on;
ignore_invalid_headers on;

location / {
  proxy_redirect off;
  proxy_set_header Host $host;
  proxy_pass http://backend?$args;
}

しかし、リクエストを送信してバックエンドで apache2 アクセス ログを表示すると、次のように表示されます。

10.200.40.102 - - [03/Jul/2013:11:51:50 -0400] "GET /? HTTP/1.0" 401 478 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"

次のようなものが表示されるはずです。

10.200.40.102 - - [02/Jul/2013:11:41:32 -0400] "GET /news/headlines/since/2013-07-02+01:00:00?api_key='xxxxxxx' HTTP/1.1" 401 4889 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"

引数の名前にアンダースコアが含まれているため、underscores_in_headers を使用しています。何がうまくいかないのでしょうか?

4

1 に答える 1